我正在开发一个在一个视图中有多个原型单元的应用程序。这对于在使用情节提要进行开发时轻松更改应用程序的外观非常有效。但是,现在我正在添加搜索(过滤)功能。我希望tableview的外观保持不变,只是过滤掉一些结果。
我的理解是我必须创建新的细胞来做到这一点。这个对吗?如果是,有没有办法用我的原型单元格的所有属性创建一个单元格。现在,新创建的(搜索结果)单元格具有默认设置。
谢谢。
我正在开发一个在一个视图中有多个原型单元的应用程序。这对于在使用情节提要进行开发时轻松更改应用程序的外观非常有效。但是,现在我正在添加搜索(过滤)功能。我希望tableview的外观保持不变,只是过滤掉一些结果。
我的理解是我必须创建新的细胞来做到这一点。这个对吗?如果是,有没有办法用我的原型单元格的所有属性创建一个单元格。现在,新创建的(搜索结果)单元格具有默认设置。
谢谢。
您当然可以使用复制和粘贴。创建一个 xib 文件(一个空文件),然后从情节提要的表格视图中复制所需的单元格,然后将其粘贴到 xib 文件中。在表数据源的 viewDidLoad 方法中,注册该 nib 文件:
[self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"SearchCell" bundle:nil] forCellReuseIdentifier:@"SearchCell"];
然后在 cellForRowAtIndexPath 方法中,您只需将具有该标识符的单元格出列用于搜索结果表视图。
要清楚地理解的是,当您使用 UISearchDisplayController 集团进行搜索时出现的表格视图不是您的表格视图。这是一个不同的表格视图,您没有 UITableViewController 管理它 - UISearchDisplayController 可以做到这一点。因此,如果您希望不同的表格视图看起来像您的表格视图,则必须采取其他措施。
编辑:总的来说(在对他的回答的评论中与 rdelmar 进行了少量交流之后),我倾向于认为最简单的解决方案是完全放弃使用单元原型。如果您在 nib (xib) 中设计单元格,则可以将该单元格用于实际表格和搜索结果表格。在这两种情况下,您都将笔尖注册到相应的表格视图中 - 然后dequeue
在这两种情况下都自己做正确的事情,而不需要更改代码。
你可以看到我在这里做类似的事情:
...除了在这种情况下,我为两个表注册了相同的单元格类,而不是相同的nib。但这一切都归结为同一件事。但是,请注意,我不是从故事板开始的,所以我从一开始就没有落入使用原型单元的陷阱。