gpt4 book ai didi

iphone - UIWindow 没有任何 subview

转载 作者:行者123 更新时间:2023-11-29 10:58:50 27 4
gpt4 key购买 nike

我想了解 iOS 应用程序中的 View 层次结构,因此我使用 XCode 4.6 制作了一个单一 View 应用程序。它会自动创建一个应用委托(delegate)和一个 View Controller 。这是应用程序委托(delegate)的相关部分:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[MBIViewController alloc] initWithNibName:@"MBIViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}

因此,它初始化一个窗口,然后设置窗口的 Root View Controller 。由于 UIWindow 是一个 UIView,并且 UIView 具有 subviews 属性,我预计 Root View Controller 的 View 将是我的应用程序窗口的 subview 。所以我在这个 Root View Controller 的方法中检查了它:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

UIWindow *currentWindow = [[[UIApplication sharedApplication] delegate] window];
NSLog(@"Subview count of current window: %d", currentWindow.subviews.count);
NSLog(@"Superview of root view controller's view: %@", self.view.superview);
}

奇怪的是输出是:

Subview count of current window: 0
Superview of root view controller's view: (null)

我假设主窗口将是 View 层次结构中最顶层的 View ,所有内容都是它的 subview 。然而,根据我的小实验,似乎有这个主窗口和 Root View Controller 的 View 都位于 View 层次结构的顶部,它们没有任何 subview /父 View 关系!谁能解释为什么我的 Root View Controller 的 View 不是主窗口的 subview ?谢谢

最佳答案

你的假设可能是对的,也可能是错的。问题出在你的测试上。

加载 View 时,内联调用 viewDidLoad。 View 在完成加载之前无法添加到父 View ,因此在调用 viewDidLoad 时不可能将其添加到父 View 。

尝试在 viewWillAppear: 中运行您的代码,因为您可以合理地预期届时 View 将具有父 View 。

关于iphone - UIWindow 没有任何 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com