1

我知道这个问题之前已经发布过,但我找到的答案不是根据这种情况

运行 2 年前在 Xcode 4.5.1 中编写的应用程序后发生异常。

这是:

异常'UIViewControllerHierarchyInconsistency',原因:'一个视图一次最多只能与一个视图控制器相关联!<UIView: 0xaa9c4f0; 帧 = (0 0; 320 367); 自动调整大小 = W+H;layer = > 与 <TabledReservationListController: 0xaa89e80> 相关联。在将此视图与 <UIViewController: 0x9e9e310> 关联之前清除此关联。

然后在像这样的几个答案中

尝试呈现模态视图控制器时的 UIViewControllerHierarchyInconsistency

建议删除 nib 文件中的视图控制器,就像在问题图像上看到的那样。

问题是在这种情况下,我没有 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

你不应该打电话viewWillAppearviewDidAppear。这些应该是框架调用您的方法。

与其尝试将reservationListController' 的视图提供给不同的控制器,不如将reservationListController.

于 2012-11-29T12:43:25.750 回答