swift語言實現提醒、UItableview自動行高、切換視圖等

直接上代碼



import Foundation
import UIKit

class TableViewController: UIViewController,UITableViewDataSource,UITableViewDelegate{
var backButton : UIButton!
var noticeButton : UIButton!
var personTableView:UITableView!
var itemAry = ["a","b","c"]
var sexAry = ["1","2","3"]
var contentAry = ["桃花塢裏桃花庵,桃花庵下桃花仙;桃花仙人種桃樹,又摘桃花換酒錢。酒醒只在花前坐,酒醉還來花下眠;半醒半醉日復日,花落花開年復年。但願老死花酒間,不願鞠躬車馬前;車塵馬足富者趣,酒盞花枝貧者緣。別人笑我太瘋癲,我笑他人看不穿;不見五陵豪傑墓,無花無酒鋤作田。—明·唐伯虎《桃花庵歌》","由註釋可以看出,文本框的設置需要獲得文字需要佔用的尺寸,並且計算文本框佔用的大小","311"]
override func viewDidLoad() {
println("load TableViewController")
super.viewDidLoad()

backButton=UIButton() //實例化
backButton.frame=CGRectMake(20,240,50,30)//大小、位置
backButton.backgroundColor=UIColor.redColor()//背景色
backButton.setTitle("Back",forState:UIControlState.Normal)//文本
backButton.addTarget(self,action:"back2Main:",forControlEvents:UIControlEvents.TouchUpInside)//事件

noticeButton=UIButton() //實例化
noticeButton.frame=CGRectMake(100,240,50,30)//大小、位置
noticeButton.backgroundColor=UIColor.redColor()//背景色
noticeButton.setTitle("Notice",forState:UIControlState.Normal)//文本
noticeButton.addTarget(self,action:"noticeAction:",forControlEvents:UIControlEvents.TouchUpInside)//事件


personTableView=UITableView()
personTableView.frame=CGRectMake(10, 40, 400, 300)
personTableView.dataSource=self
personTableView.delegate=self
personTableView.registerClass(PersonTableViewCell.self, forCellReuseIdentifier: "cell")//定義新的處理者

NSNotificationCenter.defaultCenter().addObserver(self, selector: "gameOver:", name: "gameOverNotification", object: nil)//定義提醒接收者

self.view.addSubview(backButton);
self.view.addSubview(noticeButton);
self.view.addSubview(personTableView);

}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

var cell = tableView.dequeueReusableCellWithIdentifier("cell") as PersonTableViewCell!
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.selectedBackgroundView = nil
var row=indexPath!.row

cell.reloadCell(self.itemAry[row],sex: self.sexAry[row],content: self.contentAry[row])//加載數據
return cell
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int
{

return 3
}

func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath:NSIndexPath) -> CGFloat
{
//計算行高,返回,textview根據數據計算高度
var fixedWidth:CGFloat = 260;
var contextLab : UITextView=UITextView()
contextLab.text=contentAry[indexPath.row]
var newSize:CGSize = contextLab.sizeThatFits(CGSizeMake(fixedWidth, 123));
var height=(newSize.height)
println("height---\(height)")
return height+70
}
func back2Main(button: UIView) {
self.view.window?.rootViewController=ViewController()//切換視圖
}
func noticeAction(button: UIView) {
NSNotificationCenter.defaultCenter().postNotificationName("gameOverNotification", object: title)//發出提醒

}
func gameOver(title:NSNotification)
{
let alert = UIAlertView()
alert.title = "計時完成!"
// var str = title.object as String
alert.message = "aaa"
alert.addButtonWithTitle("OK")
alert.show()

}
}
class PersonTableViewCell : UITableViewCell{

var IconImage : UIImageView?
var nameLab : UILabel?
var sexLab : UILabel?
var contextLab : UITextView?

var bgImage:UIImage?
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!){

super.init(style: style, reuseIdentifier: reuseIdentifier)

IconImage = UIImageView(frame:CGRectMake(10 , 1 , 60 , 60))
IconImage!.backgroundColor = UIColor.redColor()
self.addSubview(IconImage!)

nameLab = UILabel(frame:CGRectMake(70 , 1 , 100 , 20))
nameLab?.layer.borderWidth=2
self.addSubview(nameLab!)

sexLab = UILabel(frame:CGRectMake(70 , 21 , 30 , 20))
sexLab?.layer.borderWidth=1
self.addSubview(sexLab!)


contextLab = UITextView(frame:CGRectMake(10 , 65 , 260 , 50))
self.addSubview(contextLab!)

}


func reloadCell(name:String,sex:String,content:String){
nameLab!.text = name //NSString
sexLab!.text = sex //String
contextLab!.text = content //String
IconImage?.image=UIImage(named:"mainBack")
bgImage = UIImage(named:"BlueBubble2")

//計算行高,返回,textview根據數據計算高度變換高度
var fixedWidth:CGFloat = contextLab!.frame.size.width;

var newSize:CGSize = contextLab!.sizeThatFits(CGSizeMake(fixedWidth, 123));
println(newSize.height)
var newFrame:CGRect = contextLab!.frame;
newFrame.size = CGSizeMake(max(newSize.width, fixedWidth), newSize.height);
contextLab!.frame = newFrame;


}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章