导航控制器不添加后退按钮

时间:2011-02-18 23:32:37

标签: iphone uinavigationcontroller

我有一个将新视图推到屏幕上的视图。

显示新视图时,导航控制器中没有后退按钮。

我在一个视图中有以下内容

enter image description here

我使用以下代码推送新视图

[photoViewController setAsset:[assets objectAtIndex:(cell.rowNumber * 4) + index]];
[[self navigationController] pushViewController:photoViewController animated:YES];
[photoViewController release];

当视图出现时,以下内容可见

enter image description here

如何添加后退按钮以及在第二个视图中将相同的分享按钮添加到栏的位置?

感谢。 :)

4 个答案:

答案 0 :(得分:10)

您需要在第一个视图中设置标题。后退按钮使用上一个视图的标题。如果未设置,则不会显示后退按钮。

在第一个视图的viewDidLoad方法中,使用self.title = @“title”;

答案 1 :(得分:0)

奇怪的是,推送控制器的导航栏中没有显示后退按钮,因为它是标准的,开箱即用的行为,可以免费提供一个。你的photoViewController没有覆盖-(UINavigationItem*)navigationItem;,有吗?

至于将“共享”按钮添加到第二个控制器,您只需在其视图加载时通过控制器的navigationItem属性进行设置:

// In the .m file of whatever class photoViewController is...  
- (void)viewDidLoad {

    UIBarButtonItem* rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Share" style:UIBarButtonItemStylePlain target:self action:@selector(doSomething:)];
    [self.navigationItem setRightBarButtonItem:rightBarButtonItem];
    [rightBarButtonItem release];
}

您可以使用相同的方法设置自定义后退按钮,只需获取另一个UIBarButtonItem并将其设置为UINavigationItem的leftBarButtonItem。

答案 2 :(得分:0)

尝试在项目可执行文件中的enviornment变量中使用NSZombieEnable,这将帮助您进行调试。这种崩溃通常发生,因为数组包含的元素少于您指定的计数。您需要使用此代码我想是的......

[photoViewController setAsset:[assets objectAtIndex:(cell.rowNumber * 4) + index]];

并且还将断点放在表视图方法中,在索引路径中选择行,索引路径中的行的单元格和行数,希望您能够找到

答案 3 :(得分:0)

你不应该在VIewDidLoad上设置Button,而是在DidSelect上编码

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UIBarButtonItem *btn=[[UIBarButtonItem alloc]init];
btn.title=@"Back";
self.navigationItem.backBarButtonItem=btn;
[btn release];

  }