0

我只是推送一个UITableviewController导航堆栈。代码在 iOS 4.3 和 5 中都可以正常工作,但在 iOS 6 中崩溃。例外情况是:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[UIViewController _loadViewFromNibNamed:bundle:] 加载了“MenuController”笔尖,但未设置视图出口。

我知道未设置视图出口时会引发此异常。如图所示,出口由 IB 自动设置,但仍然相同。我究竟做错了什么?

推送控制器的简单代码:

MenuController *menu = [[MenuController alloc] initWithStyle:UITableViewStylePlain];
    menu.title = @"Watches";
    menu.MenuToBeDisplayed = @"main menu";
    [self.navigationController pushViewController:menu animated:YES];

在此处输入图像描述

堆栈跟踪是:

 0   CoreFoundation                      0x01f3e02e __exceptionPreprocess + 206
    1   libobjc.A.dylib                     0x01a12e7e objc_exception_throw + 44
    2   CoreFoundation                      0x01f3ddeb +[NSException raise:format:] + 139
    3   UIKit                               0x00a3af18 -[UIViewController _loadViewFromNibNamed:bundle:] + 505
    4   UIKit                               0x00a3b418 -[UIViewController loadView] + 302
    5   UIKit                               0x00b8934e -[UITableViewController loadView] + 80
    6   UIKit                               0x00a3b648 -[UIViewController loadViewIfRequired] + 73
    7   UIKit                               0x00a3b882 -[UIViewController view] + 33
    8   UIKit                               0x00a3bb2a -[UIViewController contentScrollView] + 36
    9   UIKit                               0x00a52ef5 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 36
    10  UIKit                               0x00a52fdb -[UINavigationController _layoutViewController:] + 43
    11  UIKit                               0x00a53286 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 254
    12  UIKit                               0x00a53381 -[UINavigationController _startTransition:fromViewController:toViewController:] + 72
    13  UIKit                               0x00a53eab -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
    14  UIKit                               0x00a544a3 -[UINavigationController pushViewController:transition:forceImmediate:] + 1030
    15  UIKit                               0x00a54098 -[UINavigationController pushViewController:animated:] + 62
    16  Tick                                0x000e5f02 -[MarketWatchViewController openMenu] + 274
    17  libobjc.A.dylib                     0x01a26705 -[NSObject performSelector:withObject:withObject:] + 77
    18  UIKit                               0x0095d920 -[UIApplication sendAction:to:from:forEvent:] + 96
    19  UIKit                               0x00b99b24 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 139
    20  libobjc.A.dylib                     0x01a26705 -[NSObject performSelector:withObject:withObject:] + 77
    21  UIKit                               0x0095d920 -[UIApplication sendAction:to:from:forEvent:] + 96
    22  UIKit                               0x0095d8b8 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    23  UIKit                               0x00a1e671 -[UIControl sendAction:to:forEvent:] + 66
    24  UIKit                               0x00a1ebcf -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 578
    25  UIKit                               0x00a1dd38 -[UIControl touchesEnded:withEvent:] + 546
    26  UIKit                               0x0098d33f -[UIWindow _sendTouchesForEvent:] + 846
    27  UIKit                               0x0098d552 -[UIWindow sendEvent:] + 273
    28  UIKit                               0x0096b3aa -[UIApplication sendEvent:] + 436
    29  UIKit                               0x0095ccf8 _UIApplicationHandleEvent + 9874
    30  GraphicsServices                    0x0291adf9 _PurpleEventCallback + 339
    31  GraphicsServices                    0x0291aad0 PurpleEventCallback + 46
    32  CoreFoundation                      0x01eb3bf5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    33  CoreFoundation                      0x01eb3962 __CFRunLoopDoSource1 + 146
    34  CoreFoundation                      0x01ee4bb6 __CFRunLoopRun + 2118
    35  CoreFoundation                      0x01ee3f44 CFRunLoopRunSpecific + 276
    36  CoreFoundation                      0x01ee3e1b CFRunLoopRunInMode + 123
    37  GraphicsServices                    0x029197e3 GSEventRunModal + 88
    38  GraphicsServices                    0x02919668 GSEventRun + 104
    39  UIKit                               0x0095a65c UIApplicationMain + 1211
    40  Tick                                0x00002dc5 main + 197
    41  Tick                                0x00002cb5 start + 53

编辑:

我已经删除了 nib 文件和initWithNibName:方法,但从昨天开始我仍然收到这个愚蠢的异常。这会让我发疯:(

4

1 回答 1

0

MenuController *menu = [[MenuController alloc] initWithStyle:UITableViewStylePlain];

您根本没有使用您的 xib 文件,因为您需要使用 xib 来初始化控制器

initWithNibName:bundle:代替initWithStyle:

然后像这样在xib上设置控制器的类

设置 xib 的控制器自定义类

于 2013-05-10T08:28:29.693 回答