【问题标题】:Extending ViewController from Storyboard从 Storyboard 扩展 ViewController
【发布时间】:2016-01-19 18:26:34
【问题描述】:

当我决定重用和扩展我的AViewController 之一时,我遇到了这种情况,它也扩展了UITableViewController 并在UIStoryboard A 中查看。

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

我想,因为我正在用视图扩展现有的 VC。我不必在新视图中重新创建 IBOutlets,如 tableView、cell 等。 但在这一点上,我应该在另一个故事板中重新创建一个视图?我错过了什么?

【问题讨论】:

    标签: ios uitableview storyboard


    【解决方案1】:

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

    【讨论】:

    • 我不确定这是否应该是下一个问题,但复制视图层次结构比 nib 效率更高还是更低?还是这样做只是不好的做法?
    • 从运行时的角度来看,这不是效率问题。但是当您必须更改视图并且需要在多个地方进行更改时,这是一个问题。
    【解决方案2】:

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

        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.
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 2018-10-11
      相关资源
      最近更新 更多