我以编程方式创建了视图控制器并将其设置为根控制器。所有因为预期的工作完美: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)不应该影响这种行为。
当然,从实用的角度来看,这没什么用处,但我想知道底下会发生什么。
我已更新该问题。困扰我的是稍微不同的东西。 –