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

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

有时会调用该函数。有时不是。' 在所有情况下,一切都很好。但是不调用该函数的情况是什么?

是的,我对所有这些视图控制器都使用 XIB。

我注意到在 navigationViewController 下的 viewControllers 是 initWithNibName 不会中断的那个。我想知道为什么。

4

1 回答 1

3

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

或者你也可以试试这个:

myViewController *objMyViewController = [[MyViewController alloc] initWithNibName:@"WebViewController_iPhone" bundle:nil];
objMyViewController.managedObjectContext = self.managedObjectContext;
navController = [[UINavigationController alloc] initWithRootViewController:objMyViewController];
[self.window setRootViewController:navController];
[window makeKeyAndVisible];
于 2012-11-12T03:40:39.307 回答