首页 > 解决方案 > 为什么预识别的 Cell 在 Sub viewcontroller 中无效?iOS

问题描述

有一个 ViewController 作为根视图控制器,我想添加一个 TableViewController 作为子视图控制器,所有这 2 个控制器都是在 Story Board 中预先设计的。在 TableViewController 故事板中,我将表格视图设置为动态,添加 1 个自定义单元格并将其标识符设置为 "cellReuse" 。

在根视图控制器代码中,我将 TableViewController 添加为 Sub ViewController 并将其 tableview 添加为 Subview,例如:

var vcSubViewController:MyTableViewController
vcSubViewController = MyTableViewController()
vcSubViewController.delegate = self
self.addChildViewController(vcSubViewController)
self.addSubView(vcSubViewController.tableview)

在 tableview 控制器代码中:

tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     ....   
let  cell = self.tableView.dequeueReusableCell(withIdentifier: "cellReuse", for: indexPath)
     ....
    }

,运行时报错,提示cannot find Reuse Identifier。

为了解决这个问题,我必须通过代码创建一个 UITableViewCell,似乎我在 Story Board 中设计的单元格还没有实现。请问我有什么问题吗?干杯!

标签: swift

解决方案


您在代码中使用的addChild(_:)方法旨在在您使用容器视图控制器时由系统调用。你不能直接这样称呼它。您可以覆盖该方法(super从它调用),但一般来说,您想要实现的目标(据我所知,您想在另一个视图控制器中嵌入一个带有表格视图的视图控制器)可以通过使用来实现一个容器视图控制器。


推荐阅读