2
- (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 が壊れていないことに気付きました。なぜだろう。

4

1 に答える 1

3

NSViewController が xib ファイル (通常は IBOutlet として) で定義されている場合、initWithNibName:bundle: は呼び出されず、initWithCoder: が呼び出されます。これは、Interface Builder を使用して NSViewController を UITabBarController (UIViewController の場合) または UINavigationController の一部として設定する場合、およびほとんどの場合、ストーリーボードを使用する場合です。

または、これも試すことができます:

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 に答える