【问题标题】:Replace ViewController in Storyboard while keeping Segues在保留 Segue 的同时替换 Storyboard 中的 ViewController
【发布时间】:2017-08-10 17:03:55
【问题描述】:

我有一个故事板,其中有一个 UITableViewController 和一些传入和传出的 Segue。假设我想让这个 UITableViewController 成为 UIViewController。目前我会删除 UITableViewController,在我的 Storyboard 上拖动一个 UIViewController 并重新创建所有 Segue。

或者,我会使用 Xcodes Storyboard 重构来拆分我的 Storyboard,这样我至少只需要重新创建所有传出的 Segue。但这无法完成,或者至少在某些情况下不切实际,因为我希望我的 ViewController 位于同一个故事板中,因为它们属于一起。

如您所知,这很麻烦,而且我认为它容易出错。

所以我的问题是:我能否在我的 Storyboard 中替换 ViewController 而不会丢失传入和传出的 Segue?

【问题讨论】:

    标签: swift xcode uiviewcontroller storyboard segue


    【解决方案1】:

    据我所知,IB 不可能。只能在设置中交换控制器类名称。但是 UITableViewController 有额外的设置,不会通过简单的重命名而消失/出现。

    我的建议是创建新的视图控制器,将序列一一链接,然后删除不再链接的 UITableViewController。

    (这是我不再使用故事板的几个原因之一。相反,我尝试实现彼此独立的屏幕,因此我可以更轻松地更改流程和/或替换单个屏幕。)

    【讨论】:

    • 好吧,我想唯一的选择是将情节提要作为源代码打开并手动更改所有内容,这比重新创建所有转场更糟糕:/
    【解决方案2】:

    不幸的是,Xcode 没有这个,至少在 9.2 中是这样。解决方案是在编辑器中编辑storyboard文件,但确实没那么糟糕。

    获取您要替换的控制器的对象 ID,以及将替换它的控制器。它位于身份检查器的文档部分,标记为对象 ID。

    确保在 Xcode 之外编辑之前保存 Storyboard。

    情节提要文件中的每个转场如下所示:

    <segue destination="S3O-z0-PFf" kind="showDetail" identifier="abcde2" id="x0q-y6-ZkJ"/>

    destination ID 替换为新视图控制器的对象 ID:

    <segue destination="b5A-4F-zOe" kind="showDetail" identifier="abcde2" id="x0q-y6-ZkJ"/>

    保存文件,Xcode 会自动重新加载它。 segues 将指向新的控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多