0
self.rootViewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
[self.window addSubview:self.rootViewController.view];    //App will not crash without this line

self.navigationController = [[UINavigationController alloc] initWithRootViewController: self.rootViewController];
[self.window addSubview:self.navigationController.view];

シミュレーターで実行するとクラッシュします。なぜですか?

エラーメッセージ:

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', 
reason: 'adding a root view controller <RootViewController: 0x6871620> as a child of 
view controller:<UINavigationController: 0x6a86dc0>'

まだわからない

4

3 に答える 3

0

問題を明確に指定していないため、コンソールに表示されたエラーメッセージを追加してください。エラーメッセージがないと、問題が発生した場所を特定できません。nibfile名が原因でクラッシュする場合は、nibファイル名をnilとして指定します。 nibファイル名を指定してください。このコードを1回試してください。

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

このコードがあなたの問題を解決することを願っています

于 2012-10-25T04:03:54.850 に答える
0

yours logic is wrong. Either add rootViewController or add navigationController as window's subview. You can't add two viewcontrollers at the same time. Here your navigationController will overwrite your rootviewcontroller. If possible then add your rootviewcontroller into navigationController or add navigationController into rootviewcontroller

于 2012-10-25T04:15:07.260 に答える
0

RootViewControllerペン先名をに設定しているので、メソッド内または他の方法nilでビューを管理していることを願っています。RootViewController.m-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

あなたが与えたエラーメッセージを修正するには、投稿されたコードを次のように変更してください

self.rootViewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController: self.rootViewController];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
于 2012-10-25T04:43:53.233 に答える