尝试以编程方式创建rightBarButtonItem

Sam*_*man 14 iphone uibarbuttonitem

这似乎不起作用.我究竟做错了什么?

-(void)awakeFromNib{
    UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showNewEventViewController)];
    self.navigationItem.rightBarButtonItem = rightBarButtonItem;
    NSLog(@"awaked");
    [rightBarButtonItem release];
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*ori 22

我的猜测是,你添加UIBarButtonItem到错误的对象!你需要将它添加到rootViewController(而不是UINavigationController像你所做的那样)

YourRootViewController *theRootController = [[YourRootViewController alloc] init];

UINavigationController* navContainer = [[UINavigationController alloc] initWithRootViewController:theRootController];

UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(dismiss)];    
theRootController.navigationItem.rightBarButtonItem = btnCancel

[navContainer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:navContainer animated:YES];
Run Code Online (Sandbox Code Playgroud)


Ste*_*son 11

我通常会将此代码放在viewDidLoad方法而不是awakeFromNib方法中; 我不确定这是你的问题所在."不工作"是什么意思?

  • 史蒂夫和马特都错了.当且仅当VC本身实际从nib加载时,此代码在`-awakeFromNib`中才适用.Matt,`-awakeFromNib`在从笔尖创建的每个对象上调用,包括VC.很可能VC本身不是一个笔尖,但它使用笔尖,因此Sam混淆了.在这种情况下,它应该在`-initWithNibName:bundle:`中. (8认同)