使用故事板重用自定义UIVIewController中的子项

时间:2013-07-19 08:23:01

标签: ios uiviewcontroller storyboard code-reuse

我有一个带导航控制器的故事板,它导致我想要重用的UIVIewController。那个UIVIewController有一个ParentUIViewController,它具有我正在重用的所有UIVIewControllers的所有基本功能。

目前我正在复制和粘贴(meh),然后我将UIViewController的类更改为我想要使用的ChildUIVIewController(ChildUIViewController扩展了ParentUIViewController)。

但这听起来像是一个糟糕的解决方案。每次我想要在视觉上更改ParentViewController时,我需要手动更新所有其他ChildViewControllers。

我曾尝试为ParentViewController创建一个xib,但未加载xib because I need a xib with the name of the ChildViewController。我已创建它,然后说该类是ParentViewController但它在segue中崩溃。

修改

我创建了一个问题状态示例

https://github.com/tiagoalmeida/storyboardexample

请注意,ParentViewController有一组更复杂的逻辑方式,这里没有说明。另请注意,我也在使用TableView。我希望这可以说明问题所在。

2 个答案:

答案 0 :(得分:1)

保持父视图上的逻辑和子UIViewControllers上的UI部分。如果您需要创建一个新的UIViewController,您将创建一个具有相应XIB的子项(或者去掉XIB并手动创建接口)。

答案 1 :(得分:0)

您是否考虑通过“幻像按钮”循环回相同的UIViewController

看看这个:UIStoryboard Power Drill, Batteries included

基本上你可以将Bar Button Item拖到Storyboard中View Controller下面的小黑条中(带有View Controller,First Responder和Exit图标的1;抱歉,我不记得究竟是什么叫做),然后您可以控制+从该按钮拖回到UIViewController以进行Push segue。这应该在Storyboard中创建一个循环segue。您接下来需要做的就是给segue一个标识符,使用[self performSegueWithIdentifier:]以编程方式从您的代码中调用它,然后实现-(void)prepareForSegue:并使用[segue destinationViewController]有条件地设置标题,也许还有一些标志您可以确定何时在同一类代码中使用不同类型的提取(或其他代码变体)。