【问题标题】:Unable to dequeue a cell with identifier无法将具有标识符的单元格出列
【发布时间】:2016-11-06 22:59:44
【问题描述】:

首先让我说这不是关于设置重用标识符的问题。问题是我收到以下错误,尽管在情节提要中设置了重用标识符(并且尽管使用 register(cellClass:forCellReuseIdentifier:) 手动注册它)。

*** Terminating app due to uncaught exception 
'NSInternalInconsistencyException', reason: 
'unable to dequeue a cell with identifier TCAccountGroups - must register a 
nib or a class for the identifier or connect a prototype cell in a storyboard'

我同时使用搜索栏控制器和 NSFetchedResultsController 来创建一个可搜索的表,用户可以在现有选项或任何用户定义的选项之间进行选择。

任何建议将不胜感激。如果我遗漏了任何有用的信息,我将非常乐意提供。

编辑:我忘了提到我在 Mac OS Sierra 10.12.1 上使用 Swift 3.0.1 和 XCode 8.0.1。

编辑 2:XCode 中的倒数第二条消息是:

*** Assertion failure in -[UISearchResultsTableView 
dequeueReusableCellWithIdentifier:forIndexPath:], 
/BuildRoot/Library/Caches/com.apple.xbs
/Sources/UIKit_Sim/UIKit-3600.5.2/UITableView.m:6593

那么UISearchResultsTableView 类中可能存在错误?

编辑 3:这是我的连接截图:

https://i.stack.imgur.com/7Y8TA.png

https://i.stack.imgur.com/M7IU2.png

https://i.stack.imgur.com/VAaeF.png

https://i.stack.imgur.com/EJLvp.png

对于这些链接,我深表歉意,但 SO 不允许我内联保存图像。

【问题讨论】:

  • 请编辑您的问题以包含您呼叫register(cellClass:forCellReuseIdentifier:)的完整方法。
  • 我在viewDidLoad 中调用它,我使用的完整方法是register(UITableViewCell.self, forCellReuseIdentifier: "TCAccountGroups")
  • 您是否为 tableViewCell 设置了标识符 TCAccountGroups?
  • 我做到了,是的。我什至验证了它在故事板 XML 中,以防 Xcode 对我撒谎。 :)
  • 你用过 xib 的 cell 吗?

标签: ios uitableview uisearchbar nsfetchedresultscontroller uisearchcontroller


【解决方案1】:

我一直在寻找解决方案,但偶然发现了可能是workable solution。如果有人知道为什么使用self.tableView 有效,而tableView 无效,我很想知道。

【讨论】:

  • 视情况而定。您可以检查 tableView 的连接检查器以查看它是否连接到 UIViewController 中的默认值。如果 tableview 在 UIViewController 内而不是在 UITableViewController 内,那么您可能必须自己添加 IBOutlet。或者如果使用 Swift 3,我认为现在在许多情况下使用 self 是一个明确的要求。
  • 这是一个UITableViewController,在表头中添加了UISearchBarController(搜索栏和搜索显示控制器)(使用情节提要)。我设置的唯一出口是UISearchBar
  • 在问题中添加几个屏幕截图,当您选择有问题的 UI 对象时显示连接。
  • 如果您编辑您的问题,您可以将实际图像添加到问题中。这将使其他试图帮助关注您提供的更新的人更容易。只需单击代码图标旁边的横向图标。我看不出你的设置有什么问题。您可能想阅读引用链接中的其他答案,因为它们似乎发现了一些错误。如果您可以复制此内容,请尝试在bugreport.apple.com 提交错误报告。他们可能会修复它。
【解决方案2】:
  1. 打开 Main.StoryBoard
  2. 选择导致表格的单元格 此错误(在您的情况下为 TCAccountGroups)
  3. 在表格视图单元格的“属性检查器”下输入标识符值,即“TCAccountGroups”。
  4. 构建并运行应用程序 - 这次无一例外。

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2015-01-23
    • 1970-01-01
    • 2016-07-09
    • 2019-02-19
    相关资源
    最近更新 更多