1

この質問が以前に投稿されたことは知っていますが、私が見つけた回答はこのケースに従っていません

Xcode 4.5.1 で 2 年前に作成されたアプリを実行すると、例外が発生します。

これは:

例外 'UIViewControllerHierarchyInconsistency'、理由: 'ビューは、一度に最大 1 つのビュー コントローラーにのみ関連付けることができます! < UIView: 0xaa9c4f0; フレーム = (0 0; 320 367); 自動サイズ変更 = W+H; layer = > は <TabledReservationListController: 0xaa89e80> に関連付けられています。このビューを <UIViewController: 0x9e9e310> に関連付ける前に、この関連付けをクリアしてください。

次に、このようないくつかの回答で

モーダル ビュー コントローラーを表示しようとすると、UIViewControllerHierarchyInconsistency が発生する

質問の画像に見られるように、nibファイルのviewcontrollerを削除することをお勧めします。

問題は、この場合、viewController がないことです。これは、TabledReservationListController の nib ファイルです。

TabledReservationListView.xib

これは、アプリがクラッシュするコードの一部です。

- (void)viewDidLoad {
    [super viewDidLoad];

    [navigation setDelegate: self];
    [self createReservationListController];

    [reservationListController viewWillAppear: NO];

     // in this line below
    [[navigation topViewController] setView: [reservationListController view]];

    [reservationListController viewDidAppear: NO];

    [[self view] addSubview: [navigation view]];
    CGRect r = [[self view] frame];
    r.origin.y = 0;
    [[navigation view] setFrame: r];

    [reservationListController setNavigationController: navigation];
}


- (void)createReservationListController {
    TabledReservationListController *res_ =
        [[TabledReservationListController alloc] initWithNibName: @"TabledReservationListView"
                                                          bundle: nil];
    [self setReservationListController: res_];
    [res_ release];

    [[[self navigation] topViewController] setTitle: @"Available Tables"];
}

誰かが助けてくれるかもしれません、よろしく。

4

1 に答える 1

1

You shouldn't call viewWillAppear and viewDidAppear. Those are supposed to be methods where the framework calls you.

Instead of trying to give the reservationListController's view to a different controller, you should push reservationListController.

于 2012-11-29T12:43:25.750 に答える