从 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.
}
}
当我决定重用和扩展我的 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.
}
}