swift - 为什么预先识别的Cell在Sub viewcontroller中无效? iOS系统

标签 swift

有一个ViewController作为 Root View Controller ,我想添加一个TableViewController作为 subview Controller ,所有这2个 Controller 都是在Story Board中预先设计的。在 TableViewController Storyboard中,我将表格 View 设置为动态,添加 1 个自定义单元格并将其标识符设置为“cellReuse”。

在 Root View Controller 代码中,我将 TableViewController 添加为 Sub ViewController 并将其 TableView 添加为 Subview,例如:

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

在表格 View Controller 代码中:

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

,运行时报错,提示找不到Reuse Identifier。

为了解决这个问题,我必须通过代码创建一个UITableViewCell,看来我在Story Board中设计的单元格还没有实现。我可以知道哪里出了问题吗?干杯!

最佳答案

EmilioPelaez 是对的,您需要从 Storyboard 或 XIB 实例化以包含 Storyboard/IB 中定义的标识符。

if let childVC = UIStoryboard(name: "Something", bundle: nil)
            .instantiateViewController(withIdentifier: "MyTableViewController") as? MyTableViewController {

     childVC.delegate = self
     self.addChildViewController(childVC)
     self.view.addSubView(childVC.tableview)
}

关于swift - 为什么预先识别的Cell在Sub viewcontroller中无效? iOS系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52501564/

相关文章:

swift - 许多目标中的相同扩展

ios - UI 测试 - isSelected 总是返回 false

swift - 当我单击主页上的一行时,转到下一页,但不显示上下文

Swift - 在 subview 中使用 UIBezierPath

ios - 如何设置 NSBatchDeleteRequest 的 NSBatchDeleteResult 类型?

ios - 将标签代码从 playground 移至 Storyboard

swift - 如何使用swift将json的数组转换成数组

ios - 如何重构 swift 代码以将协议(protocol)和结构类型作为方法参数

ios - 来自一个 View Controller 的输入附件 View 错误地出现在另一个 View Controller 中

arrays - 在 SwiftUI 中更新/编辑数组元素的最佳方式