因此,在将视图控制器推送到我的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,并且所有内容,只是按钮永远不会出现在右侧..
答案 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。