swift语言IOS8开发战记4.custom tableViewCell

第三话中讲解了如何利用系统内置的cell格式,这一话来谈谈如何自定义cell格式.在stroyboard中通过拖拽为cell添加内容,并且通过属性检测器修改样式,下面是我简单设置的一个自定义cell。

swift语言IOS8开发战记4.custom tableViewCell

因为cell是自定义的,所以需要创建一个文件与cell关联,新建一个文件,注意创建的是一个cocoa touch class,如下图所示

swift语言IOS8开发战记4.custom tableViewCell

在新建的cell的代码中添加界面上的cell的属性,让这些属性与前台的展示页面进行交互,3个label和一个image都是outlet展示。连线都是IB开头的,增加属性后的代码如下

class CustomTableViewCell: UITableViewCell {

    
    
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var locationLabel: UILabel!
    @IBOutlet weak var typeLabel: UILabel!
    @IBOutlet weak var thumbnailImageView: UIImageView!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

代码改写完毕后,需要把storyboard中的cell的类型指定为我们刚刚创建的cell类型并且把我们在类中定义的属性与前台连接起来,依旧是拖拽方式,如下图:

swift语言IOS8开发战记4.custom tableViewCell

swift语言IOS8开发战记4.custom tableViewCell


回到viewController中,复用一下前两话中tableview的代码,由于要使用我们自己定义的cell,所以把viewDidLoad之前关于cell的代码删掉。

override func viewDidLoad() {
        super.viewDidLoad()
        
        // Do any additional setup after loading the view, typically from a nib.
    }

现在回到cell的代理方法中,调用我们自定义的cell,注意cell的属性也要用我们自己设置的,注意代码的复用,代理方法的代码如下

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let identiString = "Cell" //代码复用
        let cell = tableView.dequeueReusableCellWithIdentifier(identiString,forIndexPath : indexPath) as CustomTableViewCell
        
        cell.nameLabel.text = restaurantNames[indexPath.row]
        var imageName = restaurantImages[indexPath.row]
        cell.thumbnailImageView.image = UIImage(named: imageName)
       cell.typeLabel.text = "hello"
        cell.accessoryType = UITableViewCellAccessoryType.DetailButton
        return cell
    }

运行效果如图所示:

swift语言IOS8开发战记4.custom tableViewCell

怎么样,cell的样式尽在我们的掌控之中,是不是很有成就感?

上一篇:PyCURL访问外网


下一篇:Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire