从 Storyboard 扩展 ViewController

Extending ViewController from Storyboard

当我决定重用和扩展我的 AViewController 之一时,我遇到了这种情况,它还扩展了 UITableViewController 及其在 UIStoryboard A 中的视图。

所以我创建了一个新协议。 BViewController 在另一个 UIStroryboard 中扩展了 AViewController。我添加了其他 UITabelViewController 和 class BViewController,单元格创建和所有其他 tableViews 在 AViewController 一侧。在扩展视图中我想为 TableView 提供一个新的数据源。

我想,因为我正在扩展现有的 VC 视图。我不必在新视图中重新创建 IBOutlet,如 tableView、cell 等。 但在这一点上,我似乎应该在另一个 Storyboard 中重新创建一个视图?我是不是漏了什么?

无论您是否使用 UIViewController 的相同子类,情节提要中一个场景的视图层次结构的内容不会被另一个场景继承。如果您不想在新场景中重新创建视图层次结构,那么您可能需要将视图层次结构放入 .xib 文件中并使用 UINib 进行手动 nib 加载。

您可以试试这个解决方案。

    if let destinationVC = storyboard.instantiateViewController(withIdentifier: "AViewControllerIdentify") as? AViewController {
/// Runtime to set new sub viewcontroller class.
            object_setClass(destinationVC, BViewController.self)
            if let vc = destinationVC as? BViewController {
/// add you logic here.
}

}