我有一个故事板,例如我有一个UITableViewController,带有一些传入和传出的Segues。假设我想让这个UITableViewController成为一个UIViewController。目前我将删除UITableViewController,在我的Storyboard上拖动UIViewController并重新创建所有Segues。
或者,我会使用Xcodes Storyboard重构来拆分我的故事板,这样我至少只需要重新创建所有传出的Segues。但是,在我希望我的ViewControllers位于同一个故事板中的某些情况下,这是不可能的,或者至少是不实际的,因为它们属于同一个。
如您所知,这很麻烦,我认为它很容易出错。
所以我的问题是:我可以替换故事板中的ViewController而不会丢失传入和传出的Segues吗?
答案 0 :(得分:0)
据我所知,IB不可能。它只能在设置中交换控制器类名。但是UITableViewController有一些额外的设置,通过一个简单的重命名就不会消失/出现。
我的建议是创建新的视图控制器,逐个链接seques,然后删除不再链接的UITableViewController。
(这是我不再使用故事板的几个原因之一。相反,我尝试实现彼此独立的屏幕,因此我可以更轻松地更改流程和/或更换单个屏幕。)
答案 1 :(得分:0)
不幸的是Xcode没有这个,至少从9.2开始。解决方案是在编辑器中编辑故事板文件,但实际上并没有那么糟糕。
获取要替换的控制器的对象ID,以及将替换它的对象ID。它位于Identity Inspector,Document部分,标记为Object ID。
确保在Xcode之外编辑之前保存故事板。
故事板文件中的每个segues都是这样的:
<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会自动重新加载。 segue将指向新控制器。