开发者

crash after pushing a child view controller onto a UINavigationController

I'm trying to use the following code to push a new view controller on the stack:

RootViewController *childViewController = [[RootViewController alloc] init];
// initialize childViewController fields
[self.navigationController pushViewController:childViewController animated:YES];

When I do this I get the following crash. Can someone please help me figure out why?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 1'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00db0be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00f055c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00daa7f1 -[__NSArrayM insertObject:atIndex:] + 225
    3   CoreFoundation                      0x00da5c44 -[__NSArrayM addObject:] + 68
    4   UIKit                               0x003123fd -[UINavigationBar pushNavigationItem:] + 210
    5   UIKit                               0x00312947 -[UINavigationBar _pushNavigationItem:transition:] + 124
    6   UIKit                               0x003778f0 -[UINavigationController pushViewController:transi开发者_运维技巧tion:forceImmediate:] + 1110
    7   UIKit                               0x003704a0 -[UINavigationController pushViewController:animated:] + 62
...


The problem is that the UINavigationItem is nil for that controller. I had the same exact crash and it was because I was returning a custom navigation item that had not yet been set. I solved it by returning super's navigationItem instead if it was nil:

- (UINavigationItem *) navigationItem
{
    if (navItem) {
        return navItem;
    }

    return [super navigationItem];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜