在推入另一个视图控制器之后,如何向我的uinavigationController右侧添加一个按钮?

时间:2009-11-24 04:11:54

标签: iphone uinavigationcontroller

因此,在将视图控制器推送到我的tableView后立即

// Override to support row selection in the table view.
- (void)tableView:(UITableView *)tableView
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  // Navigation logic may go here --
  //   for example, create and push another view controller.
  AnotherViewController *anotherViewController = 
      [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
  [self.navigationController pushViewController:anotherViewController animated:YES];

好的,这样可以打开另一个视图,然后您可以通过点击自动出现在左上角的按钮返回上一个视图(“弹出”当前视图)导航栏现在。

好的,所以说我想用DONE按钮填充导航栏的右侧,就像在iPhone附带的“Notes”应用程序中一样。我该怎么做?

我尝试了这样的代码:

  UIBarButtonItem * doneButton =
  [[UIBarButtonItem alloc]
   initWithBarButtonSystemItem:UIBarButtonSystemItemDone
   target:self
   action:@selector( doneFunc ) ];

  self.navigationController.navigationItem.rightBarButtonItem = doneButton ; // not it..

  [doneButton release] ;

已定义doneFunc,并且所有内容,只是按钮永远不会出现在右侧..

2 个答案:

答案 0 :(得分:32)

我认为你发布的代码应该可以正常工作。问题是,你把它放在哪里了?我会将它放入您正在推送的视图控制器的-viewDidLoad方法中。如果根据您显示的内容需要不同的按钮,则可以使用-viewWillAppear:方法执行此操作。 / p>

更新:实际上,我认为您需要更改

self.navigationController.navigationItem.rightBarButtonItem = doneButton;

self.navigationItem.rightBarButtonItem = doneButton;

答案 1 :(得分:13)

AH。你必须这样做:

- (void)tableView:(UITableView *)tableView
        didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  AnotherViewController *anotherViewController = 
      [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
  [self.navigationController pushViewController:anotherViewController animated:YES];


  UIBarButtonItem * doneButton =
  [[UIBarButtonItem alloc]
   initWithBarButtonSystemItem:UIBarButtonSystemItemDone
   target:self
   action:@selector( doneFunc ) ];

  anotherViewController.navigationItem.rightBarButtonItem = doneButton ;

  [doneButton release] ;
}

Who'da thunk it。