使用相同的自定义单元实现两个UITableView以供重用

时间:2016-05-31 20:52:54

标签: ios swift uitableview

我目前有两个'填充了该应用的联系人。我有一个用于简单地查看和编辑/删除,一个用于从列表中搜索/选择联系人。但是,在尝试为UITableView使用相同的自定义类单元格时,我得到了返回的nil值。

这是我的两个UITableView函数。

cellForRowAtIndexPath

2 个答案:

答案 0 :(得分:1)

如果表中没有名为FirstCellSecondCell的单元格,dequeueReusableCellWithIdentifier(_:)方法将返回nil,您需要自己构建单元格。

// no don't do this.
let cell: ContactCell
if let c = tableView.dequeueReusableCell(withIdentifier: "FirstCell") as? ContactCell {
    cell = c
} else {
    cell = ContactCell(style: .default, reuseIdentifier: "FirstCell")
}

如果您希望UIKit为您构建单元格,您应该使用iOS 6中引入的dequeueReusableCell(withIdentifier:for:)

// swift 3
let cell = tableView.dequeueReusableCell(withIdentifier: "FirstCell", 
                for: indexPath) as! ContactCell

// swift 2
let cell = tableView.dequeueReusableCellWithIdentifier("FirstCell",
                forIndexPath: indexPath) as! ContactCell
...

另外,检查是否在界面构建器中正确地为单元格提供了正确的重用标识符。

enter image description here

答案 1 :(得分:0)

正如你所说的那样getting nil,我的快速猜测是你没有在某个时刻注册过这个单元格,比这个单元格事件要早。请看this thread on how to register cell