我正在构建一个包含两个相同类但具有不同标识符的单元格的表。
我正在使用分段控件来显示或。
我相信一切都在Storyboard上正确连接,
>>> run /tmp/thing.py
True 272331835 272331835
False -9223372036582443978 9223372037127107638
True 272331835 272331835
False -9223372036582443978 9223372037127107638
True 272331835 272331835
False -9223372036582443978 9223372037127107638
True 272331835 272331835
False -9223372036582443978 9223372037127107638
True 272331835 272331835
False -9223372036582443978 9223372037127107638
根据断点, 失败 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let friendRequest = self.friendRequestsToDisplay[indexPath.row]
requestDirection = isAnIncomingRequest ? "IncomingRequestCell" : "OutgoingRequestCell"
if let cell = tableView.dequeueReusableCellWithIdentifier(requestDirection) as? RequestCell {
cell.configureCell(friendRequest, isAnIncomingRequest: isAnIncomingRequest)
return cell
} else {
return UITableViewCell()
}
}
:
dequeueReusableCellWithIdentifier
在评论中建议的fatal error: unexpectedly found nil while unwrapping an Optional value
方法中对标识符("IncomingRequestCell"
和"OutgoingRequestCell"
进行硬编码后,似乎这些值是问题的根源。但是,它们是正确的在IB中识别各自的UITableViewCell。
有什么想法吗?
答案 0 :(得分:0)
如果所有内容都已正确连接 - 这意味着您在IB中正确设置了reuseIdentifiers
,而UITableViewCells
中的UITableView
是原型单元格(并且不从笔尖加载 - 需要手动注册UITableViewCells
),而不仅仅是使用
dequeueReusableCellWithIdentifier:forIndexPath:
答案 1 :(得分:0)
为什么要为reuseIdentifier
使用全局变量并每次更新?你可以使用local var。
同时避免使用dequeueReusableCellWithIdentifier
,请改用dequeueReusableCellWithIdentifier:forIndexPath:
。因为它,我之前的一个项目中有一些奇怪的问题。
这是一个简单的例子,它就像一个魅力:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let identifier = (indexPath.row == 0) ? "Cell1" : "Cell2"
let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)
self.configureCell(cell, atIndexPath: indexPath)
return cell
}
更新:经过调查,我们发现,问题出在自定义单元类初始化代码中。