swift自定义UITableViewCell,并配置到UITableView的注意事项
情况一:直接新建UITableviewController的情况,这里命名为DiaryTableView.swift
1,删除初始化方法init
2,新建完成后,系统会自动生成很多方法,在UITableView后面带有“ ?”,一律改成“ !”(这里使测试版本的一个不好的地方,估计以后也会有所修改)
3,新建User Interface/Empty,这里命名为DiaryCell.xib,设置identifier,这里我设置成“DiaryCell”(可以自定义名字,这个很重要,在右上角部位设置)
新建swift继承UITableViewCell,这里命名为DiaryCell.swift
通过设置DiaryCell.xib的custom Class为TestCell关联.xib和.swift,并按照你自己的需求关联相关控件(也可以不用关联控件就可以看到效果)
4,回到DiaryTableView.swift,修改下面三个方法,原因下面的注释应该足够详细了,这里不多说了,这样运行结果就该出来了
附上核心代码:
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? { //cell标志符,使cell能够重用(如果不需要重用,是不是可以有更简单的配置方法?) let indentifier:String = "DiaryCell" //注册自定义cell到tableview中,并设置cell标识符为indentifier(nibName对应UItableviewcell xib的名字) var nib:UINib = UINib(nibName:"DiaryCell", bundle: nil) tableView.registerNib(nib, forCellReuseIdentifier: indentifier) //从tableview中获取标识符为papercell的cell var cell:DiaryCell = tableView.dequeueReusableCellWithIdentifier(indentifier) as DiaryCell //设置单元格属性 return cell }
情况二:在UIViewController中添加UITableview(稍后播出)
1,设置tableviewcell同上
2,初始化UItableview,并设置frame,并self.view.addSubview(tableview)
3,设置代理delegate,dataSource,实现3个必需的代理方法
附上代码:
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.tableview.delegate = self self.tableview.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int{ return 1 } func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ //cell标志符,使cell能够重用(如果不需要重用,是不是可以有更简单的配置方法?) let indentifier:String = "SwitchCell" //注册自定义cell到tableview中,并设置cell标识符为indentifier(nibName对应UItableviewcell xib的名字) var nib:UINib = UINib(nibName:"SwitchCell", bundle: nil) tableView.registerNib(nib, forCellReuseIdentifier: indentifier) //从tableview中获取标识符为papercell的cell var cell:SwitchCell = tableView.dequeueReusableCellWithIdentifier(indentifier) as SwitchCell return cell } func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat{ return 40 }