[英]Add common views once in navigation controller
我要實現的目標是在界面構建器中設計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
設置了背景色)
此方法是第一個子視圖控制器中按鈕的處理程序。 到現在為止還挺好。 不幸的是,結果不符合預期-推送的視圖控制器為黑色。 首先,我認為這是因為BaseViewController
是在storyboard
rootViewController
中設計的,最初設置為導航控制器的rootViewController
。 將其移動到xib
文件並從代碼進行設置對我而言並不起作用,因為您無法在xib
添加Container View
。
總而言之,我想有一個受BaseViewController
類控制的BaseViewController
設計,內容將作為它的childViewController
添加。 推送新的視圖控制器將是對這些childViewController
進行操作的結果,並且應相應地更新導航堆棧。
另外,整個事情都需要與iOS 7一起使用。
非常感謝您對如何實現這一目標的任何幫助!
該問題是由於base.childViewControllerContainer
nil
引起的-這是由於視圖控制器的view
屬性延遲加載的事實引起的。 在訪問base.childViewControllerContainer
之前添加[base view]
解決了該問題,盡管我不確定這是否是唯一,最好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.