swift - 为什么预识别的 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 中设计的单元格还没有实现。请问我有什么问题吗?干杯!
解决方案
您在代码中使用的addChild(_:)
方法旨在在您使用容器视图控制器时由系统调用。你不能直接这样称呼它。您可以覆盖该方法(super
从它调用),但一般来说,您想要实现的目标(据我所知,您想在另一个视图控制器中嵌入一个带有表格视图的视图控制器)可以通过使用来实现一个容器视图控制器。
推荐阅读
- c - C 中的内存管理 - Linux 内核
- php - 在 php 中使用 for each 迭代 mysql 查询
- r - 将一个 sf 对象导出到多个 shapefile
- ios - 如何将自定义脚本传递给 ./configure 以在编译后运行?
- android - 如何从表 SQLite 中获取最后一条记录
- php - 更新了 composer.json 中的 symfony,但在尝试使用“require”安装新软件包时出现错误
- node.js - Axios - 请求失败,状态码 400 错误
- r - 将时间列更改为没有日期值的 POSIXct
- android - getView() 方法中的 Parent 到底是什么
- delphi - Delphi 源代码仅具有 LF 与 CRLF 导致 IDE 中的源损坏