14

これは機能していないようです。私は何を間違っていますか?

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

3 に答える 3

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];
于 2012-02-09T21:06:57.753 に答える
11

通常、このコードはviewDidLoadメソッドではなくメソッドに入れawakeFromNibます。そこに問題があるかどうかはわかりません。「働かない」とは?

于 2010-01-19T01:08:28.693 に答える
3

代わりにこれを試してください:

- (void) initUI {   
   UIBarButtonItem *btnCancel = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel" 
                                  style:UIBarButtonItemStyleBordered 
                                  target:self 
                                  action:@selector(dismiss)]autorelease];    

   self.navigationItem.rightBarButtonItem = btnCancel;

   //[btnCancel release]; no need to explicitly release the item

}
于 2010-11-13T10:30:52.707 に答える