直接上代码
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;
}
}
- 大小: 130.9 KB
分享到:
相关推荐
Swift-TableView-Example, 关于Swift语言的简单UITableView应用 Swift-TableView-ExampleSwift(3.2) 语言的简单 UITableView 应用。 使用的自定义单元格和结构。要求Xcode 8 iOS 10 应用程序截图
这是一个示例项目实现功能UITableViewCell动态高度基于自动布局,标签自动对齐
Infinite-UIITableview-Scroll, 在Swift语言中,无穷UITableview滚动 Infinite-UIITableview-ScrollSwift 语言中无限的UITableview滚动简单的Swift 语言测试( 无 objective-c )如何在其他控制器中使用NSObject文件类...
自定义封装UITableView和MJRefresh相结合
在程序开发中,很多数据是动态获取的,通常UITableView中的行高设置为固定的,当文字量比较多时,程序会自动隐藏多余的数据,本文讲述自定义设置行高
东西不多简单易懂、Swift语言如何使用UITableView、Swift与OC的混合开发、扩展(Extension)的简单使用、协议(protocol)
通常UITableView中的行高设置为固定的,当文字量比较多时,程序会自动隐藏多余的数据,并且在可以显示的位置最后加‘…’,如果需要程序要求完全实现数据内容,则需要根据内容的大小改变UITableView中的行高。
UITableView Cache - UITableView 缓存
使用Masonry结合UITableView-FDTemplateLayoutCell,纯代码实现聊天文字消息界面的展示;
点击滑动切换视图 视图加载为不同的控制器视图
swift UICollectionView, UITableView 上拉/下拉刷新源代码,xcode6.1 保证能用,源代码出处(http://code4app.com/ios/Pull-to-refresh-in-Swift/53aa79ce933bf07d628b524b)不过下载下来编译20多处错误,本人已经...
UITableView-Swift swift实现的UITableView
ReverseExtension - UITableView扩展实现从表格底部插入单元格
自定义对象 自定义cell uitableview swift实例
http://blog.csdn.net/riven_wn/article/details/46561383
TreeView for iPhone,《使用UITableView实现树视图》一文源代码
UICollectionView和UITableView的声明性,可测试数据源
让表格视图UITableView的TableHeader和TableFooter可以使用AutoLayout进行布局
一个方法实现表头部视图缩放