我以編程方式創建了視圖控制器並將其設置爲根控制器。所有因爲預期的工作完美:setRootViewController:在setViewControllers之後無法按預期工作:已調用
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CustomViewController *vc = [[CustomViewController alloc] init];
[[self window] setRootViewController:vc];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
然後我添加了一個UITabBarViewController,設置它的「viewControllers」屬性指向(數組)主要的viewController「VC」。
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
CustomViewController *vc = [[CustomViewController alloc] init];
UITabBarController *tbc = [[UITabBarController alloc] init];
NSArray *controllers = @[vc];
[tbc setViewControllers:controllers];
[[self window] setRootViewController:vc];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
和視圖採空,在啓動時,屏幕顯示,也有警告有關根視圖控制器沒有設置。在'vc'控制器的視圖下面添加字符串後,終於加載了,但屏幕底部有一個空行,就好像UIBarController修改了[[UIMainScreen bounds]一樣。
[[self window] addSubview:vc.view];
我是新來的iOS開發,我有點困惑。看起來我並不理解關於視圖控制器層次結構的一些非常基本的東西,但在閱讀Apple的「視圖控制器編程指南」後,我仍然不明白我的錯在哪裏。
setRootViewController:方法應該自動將參數視圖控制器的_view作爲窗口的默認視圖分配,但如果命名的視圖控制器先前已由UITabBarViewController的viewControllers屬性指向,則不會發生此情況。雖然我檢查了調試器,發現調用setViewControllers:方法後'vc'對象沒有改變。
您能解釋一下發生了什麼,或者指向我應該閱讀的文檔嗎?
更新:我不打算將'vc'控制器插入'tbc'控制器。我想要的是全屏顯示「vc」視圖,因爲它通常會顯示沒有關於「tbc」的代碼。 從我的角度來看,添加另一個視圖(在我的情況下是tbc)不應該影響這種行爲。
當然,從實用的角度來看,這沒什麼用處,但我想知道底下會發生什麼。
我已更新該問題。困擾我的是稍微不同的東西。 –