0

目前我有一个 UITableViewController 和一系列选项卡。一旦我收到通知,我就会显示本地警报,当它被点击时,我会向用户显示当前对话。我的路径是。

UITableViewController > 房间 > 聊天对话

问题是。我认为 [nav popViewControllerAnimated:NO]; 因为它可以很好地将同一 VC 从一个对话推到另一个对话。但是当我点击后退按钮时它会崩溃。它执行来自 rootViewControler 的推送,但当我回击时无法找到通往房间的路。

代码:

- (void)DisplayNewMessage:(NSNotification *) notification {

    NSDictionary* userInfo = notification.userInfo;

    UITabBarController *tab = self;
    [tab setSelectedIndex:2];
    UINavigationController *nav = tab.viewControllers[2];
    RoomListTableView *chatWindow = nav.viewControllers[0];

    chatWindow.user_reciever = userInfo[@"user_reciever"];
    chatWindow.roomid = userInfo[@"room"];
    chatWindow.user_sender = userInfo[@"user_sender"];

    NSLog(@"ROOM_ID_WEB: %@", userInfo[@"room"]);

    if ([nav.topViewController isKindOfClass:[chatVC class]]) {

        chatVC *conversationVC = (chatVC *) nav.topViewController;

        if (![conversationVC.roomid isEqualToString:userInfo[@"room"]]) {

            [nav popViewControllerAnimated:NO];
            [chatWindow performSegueWithIdentifier:@"push_conversation" sender:self]; 
        }
    }

    if ([nav.topViewController isKindOfClass:[RoomListTableView class]]) {

        [chatWindow performSegueWithIdentifier:@"push_conversation" sender:self]; // push_conversation
    }
}

堆栈跟踪:

2015-02-21 23:19:12.992 mobile-app[1429:91432] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:]: section (0) beyond bounds (0).'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001134f1f35 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000112dedbb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001134f1e6d +[NSException raise:format:] + 205
    3   UIKit                               0x000000011177ba8f -[UITableView _contentOffsetForScrollingToRowAtIndexPath:atScrollPosition:] + 429
    4   UIKit                               0x000000011177c94a -[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:] + 33
    5   mobile-app                          0x000000010de3341d -[chatVC viewWillAppear:] + 1889
    6   UIKit                               0x00000001117bf821 -[UIViewController _setViewAppearState:isAnimating:] + 487
    7   UIKit                               0x00000001117df605 -[UINavigationController _startCustomTransition:] + 887
    8   UIKit                               0x00000001117eb3fe -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
    9   UIKit                               0x00000001117ebf47 -[UINavigationController __viewWillLayoutSubviews] + 43
    10  UIKit                               0x0000000111931509 -[UILayoutContainerView layoutSubviews] + 202
    11  UIKit                               0x000000011170f973 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521
    12  QuartzCore                          0x0000000110244de8 -[CALayer layoutSublayers] + 150
    13  QuartzCore                          0x0000000110239a0e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    14  QuartzCore                          0x000000011023987e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
    15  QuartzCore                          0x00000001101a763e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
    16  QuartzCore                          0x00000001101a874a _ZN2CA11Transaction6commitEv + 390
    17  QuartzCore                          0x00000001101a8db5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
    18  CoreFoundation                      0x0000000113426dc7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    19  CoreFoundation                      0x0000000113426d20 __CFRunLoopDoObservers + 368
    20  CoreFoundation                      0x000000011341cb53 __CFRunLoopRun + 1123
    21  CoreFoundation                      0x000000011341c486 CFRunLoopRunSpecific + 470
    22  GraphicsServices                    0x0000000113d909f0 GSEventRunModal + 161
    23  UIKit                               0x0000000111696420 UIApplicationMain + 1282
    24  mobile-app                          0x000000010de2a55d main + 80
    25  libdyld.dylib                       0x0000000113fe4145 start + 1
    26  ???                                 0x0000000000000001 0x0 + 1
)
4

1 回答 1

0

您的问题与 tableview 有关,请在调用 scrollToRowAtIndexPath 之前重新加载您的 tableView 数据。

于 2015-02-22T07:22:50.260 回答