目前,我有我的故事板具有嵌入標籤控制器和嵌入式導航控制視圖控制器。此視圖控件還具有容器視圖,該視圖顯示取決於位於導航欄中的分段控件中所選值的視圖。
爲用於容器視圖容器視圖
的觀點加載視圖是XIB文件(未故事板爲基礎)和以編程加載:
- (void)viewDidLoad
{
[super viewDidLoad];
// First Controller
self.firstViewController = [[FirstViewController alloc] init];
// Second Controller
self.secondViewController = [[SecondViewController alloc] init];
// Add the controllers to an Array
self.controllers = @[self.firstViewController, self.secondViewController];
// Set the container to show the first view controller on load
[self displayContentController:[self.controllers firstObject]];
}
- (void)displayContentController:(UIViewController *)content
{
[self addChildViewController:content];
content.view.frame = [self frameForContentController];
[self.view addSubview:content.view];
[content didMoveToParentViewController:self];
// Set current controller
self.currentController = content;
}
存在的問題我面對
我遇到的問題是容器視圖的其中一個視圖是包含照片的集合視圖,我需要能夠在選擇其中一個單元格時以大尺寸推送包含圖像的視圖。
如何在容器視圖內的視圖中將視圖推送到導航控制器上?
在一個容器視圖視圖內調用[self.navigationController pushViewController:singleImageController animated:YES]可以完美地工作。謝謝。 – ritch
雖然我很好奇,但在這種情況下爲UIViewController設置一個類別會有好處嗎?我瞭解了一些類別,但我只在Objective C中進行了5周的編程。 – ritch
那麼,你不必創建一個類別。但我強烈建議您始終爲您的自定義容器的孩子提供此功能。想象一下:子A從用戶那裏接收一個動作,要求你顯示子B - 當然,顯示子B的邏輯在你的容器類中,但是如何從子A獲得對容器的引用來執行顯示孩子B的動作? - 在這種情況下,UIViewcontroller類別是最好的方法 - 我希望這個例子不是太混亂;) – Cabus