【发布时间】:2011-07-05 02:20:21
【问题描述】:
似乎无法让后退按钮出现在 UINavigationController 流中。我只想让它自动触发当前控制器的弹出以返回父级。
对于获得自动后退按钮的最低要求(我的意思是具有父控制器标题的按钮和一个箭头指向左侧的按钮),我有点困惑,然后你需要做些什么来定制除此之外的东西。在这个阶段我只是在寻找前者。
@implementation AppointmentListController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Detailed View";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
}
访问该视图的代码(即父控制器中的代码):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AppointmentListController *appointmentListController = [[AppointmentListController alloc] initWithNibName:@"AppointmentListController" bundle:nil];
[ [self navigationController] pushViewController:appointmentListController animated:YES];
[appointmentListController release];
}
编辑:PS 上面的代码我实际上没有看到任何按钮出现在左侧。
EDIT2:David,我尝试在 RootViewController 中按以下后退按钮代码(并将其从 AppointmentListController 中拉出),但它仍然没有显示任何后退按钮?
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
EDIT3:David - 确实使用以下代码工作,除了文本是“返回”而不是像我之后的父控制器的标题 - 尝试删除 .title= 行但没有出现任何按钮。
// create a custom navigation bar button and set it to always say "Back"
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
EDIT4 - 不好 - 我没有设置父控制器的标题,所以我猜在这种情况下它根本不会尝试,而是一个后退按钮 - 所以添加“self.title = @”Views“ ;"到父控制器固定的东西(并删除我手动设置后退按钮标题的行)
EDIT5 - 对于任何像我一样困惑的人 - 所以最后你根本不需要父控制器中的任何 backBarButtonItem 设置代码 - 只需要确保父控制器设置了“标题”并且然后事情似乎会自动运行-doh
【问题讨论】:
标签: iphone ios uinavigationcontroller uitableview uibarbuttonitem