我目前有两个'
填充了该应用的联系人。我有一个用于简单地查看和编辑/删除,一个用于从列表中搜索/选择联系人。但是,在尝试为UITableView
使用相同的自定义类单元格时,我得到了返回的nil值。
这是我的两个UITableView
函数。
cellForRowAtIndexPath
答案 0 :(得分:1)
如果表中没有名为FirstCell
或SecondCell
的单元格,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
...
另外,检查是否在界面构建器中正确地为单元格提供了正确的重用标识符。
答案 1 :(得分:0)
正如你所说的那样getting nil
,我的快速猜测是你没有在某个时刻注册过这个单元格,比这个单元格事件要早。请看this thread on how to register cell。