我在导航控制器中嵌入了一个表视图控制器。表格单元格都是静态的,选择其中任何一个都将转换为另一个表格视图。当发生segue时,导航栏会显示新视图的“取消”按钮,而不是“后退”按钮。
我可以在代码中添加一个后退按钮,如
- (void)viewDidLoad
{
self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonSystemItemCancel
target:nil
action:nil];
self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
}
然后后退按钮将是一个矩形形状,而不是默认的后退按钮形状,左边缘有一个角度。如何简单地将取消按钮更改为系统后退按钮?
这是我从表格单元格到下一个表格视图的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case 0:
[self performSegueWithIdentifier:@"goToSecondTable" sender:self.tableView];
break;
/* and perform segue for other rows */
default:
break;
}
}
在prepareForSegue中没有任何事可做。
以下是连接检查员显示的内容
以下是“Bar Button Item - Back”的连接
答案 0 :(得分:0)
默认情况下,系统提供的后退按钮应为左栏按钮项,无需执行任何操作(代码或IB中)。
删除Connections检查器中与backBarButton的连接。从IB中的导航栏中删除后栏按钮。删除代码中后栏按钮的插座。运行你的应用程序,你应该看到免费提供的后栏按钮。
答案 1 :(得分:0)
如果没有默认后退按钮不起作用,请自定义代码
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
答案 2 :(得分:0)
为什么你在didselectrow中执行segue而不是仅仅按下viewcontroller?
尝试[self.navigationController pushViewController:YOURVIEWCONTROLLER];
这将确保你有一个后退按钮。此外,你必须使用这样的segue,确保你正在使用push segue到你的下一个控制器。看起来您在第二个viewController中创建了自己的后退按钮。您不需要创建一个,因为将使用前一个viewcontroller的标题为您创建一个。您可以通过在推送之前更改上一个viewcontroller中的self.title = @“Back”来确保它返回。
代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case 0:
self.title = @"Back";
[self.navigationController pushViewController:SECONDVC];
break;
/* and perform segue for other rows */
default:
break;
}
}
并在viewWillAppear中:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.title = @"Whatever you want";
}