【问题标题】:How to reuse a cell that is inside another table view controller如何重用另一个表视图控制器内的单元格
【发布时间】:2015-09-06 17:06:54
【问题描述】:

我有以下情况:

  • 有一个表格视图控制器显示所有字体系列名称,它位于故事板中
  • 在情节提要的 UITableViewController 内,有一个标识符为“FamilyName”的单元格,该单元格还有一个链接到 segue 的披露指示符
  • 我添加了一个 UISearchController 来过滤前一个表视图控制器的结果

在充当结果更新器的表视图控制器中,我注册了相同的重用标识符:

tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "FamilyName")

我正在调用 dequeueReusableCellWithIdentifier:forIndexPath:,但我得到了一个不同的 UITableViewCell。我想在另一个表视图控制器内的情节提要中获得相同的单元格,以便它已经链接到一个segue。

【问题讨论】:

    标签: ios swift uitableview


    【解决方案1】:

    重用您的 tableView。不要新建一个,只需更改数据源即可。这应该按预期工作。只需修改数据源并更新表即可。

    【讨论】:

    • 我应该如何重复使用它?它在故事板文件中,我不知道如何实例化它。
    • 只需更改您的数据源。如果你的数据存储在一个数组中,你改变数组的内容,然后调用 [tableview reloadData] 来更新表格。
    • 情况更复杂:一个table view controller应该显示数据,另一个实现UISearchResultsUpdating,它在一个UISearchController里面。我不能简单地使用第一个表视图控制器的表视图,它们是两个独立的表视图控制器。
    【解决方案2】:
    tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "FamilyName")
    

    这意味着:不要使用情节提要来获取单元格。因此,当单元格不是来自故事板时,您几乎不会感到惊讶:您说不。从情节提要中获取单元格的唯一方法是让表格视图为该单元格重用标识符注册 no 类或 nib。

    【讨论】:

    • 如果我没有注册类并调用 dequeueReusableCellWithIdentifier:forIndexPath: 应用程序崩溃。
    • 是的,因为这个表视图控制器不是从情节提要中的表视图控制器场景中实例化的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多