我试图实现的是在界面构建器中设计我的“共享”UI部分,并使用子视图控制器向用户显示内容。这听起来可能是在试图重塑
UINavigationController
,但事实并非如此。事实上,整件事都嵌入其中。
看起来是这样的:
现在,我要做的是更改这个的子视图控制器
BaseViewController
并在导航栏中指示此更改,以便保留其所有功能。
我尝试添加这样的方法:
+ (UIViewController *)baseViewControllerWithChild:(UIViewController *)child {
BaseViewController *base = [BaseViewController new];
[base addChildViewController:child];
child.view.frame = base.childViewControllerContainer.frame;
[base.view addSubview:child.view];
[child didMoveToParentViewController:base];
return base;
}
然后像这样使用它:
- (void)didTouch:(UIButton *)sender {
[self.parentViewController.navigationController pushViewController:[BaseViewController baseViewControllerWithChild:[DummyViewController new]] animated:YES];
}
(注:
DummyViewController
正是这样-一个虚拟vc,仅用于测试,它只设置了背景色
viewDidLoad
)
此方法是第一个子视图控制器中按钮的处理程序。到现在为止,一直都还不错。不幸的是,结果并不像预期的那样——推送的视图控制器是黑色的。一开始我以为这是因为
BaseView控制器
设计于
storyboard
初始设置为
rootViewController
导航控制器。将其移动到
xib
文件和代码中的设置对我来说不太有效,因为您不能添加
Container View
在一个
西班牙文
.
总而言之,我希望基础设计由
BaseView控制器
类和内容将作为
childViewController
这是一个很好的例子。按下新的视图控制器将是对这些控件执行操作的结果
子视图控制器
并且应该相应地更新导航堆栈。
此外,整个系统需要与iOS 7配合使用。
对于如何实现这一目标,我们非常感谢您的帮助!