我想要實現的是在界面構建器中設計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
。將它移動到xib
文件和代碼設置不適合我,因爲您不能在xib
中添加Container View
。總的來說,我想要有一個由BaseViewController
類管理的基本設計,內容將被添加爲childViewController
。推動一個新的視圖控制器將是對這些childViewController
的行動的結果,並應相應地更新導航堆棧。
而且,整個事情需要與iOS 7
任何幫助的工作就如何努力實現這一目標是非常感謝!
你說,「BaseViewController是在故事板中設計的」。你應該使用故事板來實例化它,而不是創建一個獨立的對象嗎? –
我也試過讓它按照'xib'設計,但它並沒有幫助我。此外,它沒有通過'[UIStoryboard instatiateViewController ...]'實例化,但是查看'new'(或'alloc init'),因爲它是同樣的事情。如果需要,我可以在代碼中設計視圖,但我希望儘可能地使用界面構建器。 – Losiowaty
嘗試使用'instantiateViewControllerWithIdentifier:'。這實際上不是「同一件事」。 –