gpt4 book ai didi

objective-c - 为什么有时不调用 initWithNibName?

转载 作者:行者123 更新时间:2023-12-04 05:24:37 26 4
gpt4 key购买 nike

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

一切正常。上面的代码是编译器编写的标准代码。没什么奇怪的。我在 viewControllers 中放置断点只是为了看看事情进展如何。

有时会调用该函数。有时不是。
'
在所有情况下,一切正常。但是在什么情况下不调用该函数呢?

是的,我正在为所有这些 viewController 使用 XIB。

我注意到直接在 navigationViewController 下的 viewControllers 是 initWithNibName 不会中断的地方。我想知道为什么。

最佳答案

当您的 NSViewController 在 xib 文件(通常作为 IBOutlet)中定义时, initWithNibName:bundle: 不会被调用,而是 initWithCoder: 被调用。当您使用 Interface Builder 将 NSViewController 设置为 UITabBarController(对于 UIViewController)或 UINavigationController 的一部分时就是这种情况,并且几乎总是在使用 Storyboards 时。

或者你也可以试试这个:

myViewController *objMyViewController = [[MyViewController alloc] initWithNibName:@"WebViewController_iPhone" bundle:nil];
objMyViewController.managedObjectContext = self.managedObjectContext;
navController = [[UINavigationController alloc] initWithRootViewController:objMyViewController];
[self.window setRootViewController:navController];
[window makeKeyAndVisible];

关于objective-c - 为什么有时不调用 initWithNibName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337827/

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