Ios 将导航栏“取消”按钮替换为“后退”按钮
我在导航控制器中嵌入了一个表视图控制器。表格单元格都是静态的,选择其中任何一个都将转到另一个表格视图。当segue发生时,导航栏显示新视图的“取消”按钮,而不是“返回”按钮 我可以在代码中添加一个后退按钮,如Ios 将导航栏“取消”按钮替换为“后退”按钮,ios,objective-c,uinavigationcontroller,uibarbuttonitem,Ios,Objective C,Uinavigationcontroller,Uibarbuttonitem,我在导航控制器中嵌入了一个表视图控制器。表格单元格都是静态的,选择其中任何一个都将转到另一个表格视图。当segue发生时,导航栏显示新视图的“取消”按钮,而不是“返回”按钮 我可以在代码中添加一个后退按钮,如 - (void)viewDidLoad { self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back"
- (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”的连接
默认情况下,系统提供的后退按钮应为左栏按钮项,无需执行任何操作(代码或IB)
在连接检查器中删除与backBarButton的连接。从IB中的导航栏上卸下后栏按钮。在代码中卸下后栏按钮的出口。运行应用程序时,您应该会看到免费提供的后退按钮。如果没有默认后退按钮,请自定义代码
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
为什么要在didselectrow中执行segue,而不只是按下viewcontroller 尝试[self.navigationController pushViewController:YOURVIEWCONTROLLER] 这将确保你有一个后退按钮。此外,您还必须使用这样的segue,确保您使用的是下一个控制器的推送segue。看起来您还在第二个viewController中创建了自己的后退按钮。您不需要创建一个,因为将使用上一个viewcontroller的标题为您创建一个。在按下前一个viewcontroller之前,可以通过在上一个viewcontroller中更改self.title=@“back”来确保它显示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;
}
}
并在视图中显示:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.title = @"Whatever you want";
}
您可以发布用于推送新视图的代码吗。此外,如果您在新控制器的加载方法中执行任何操作,请添加触发segue和加载视图的代码。谢谢但在我的情况下,“取消”按钮显示为默认值。“后退”按钮没有。您必须编写一些代码来执行此操作,或者在IB中拖放它。您是否从对象库拖放导航栏?我没有将任何按钮拖动到导航栏。当我控制从第一个视图的表格单元格拖动到该栏以创建一个分段时,该栏会自动添加。如果我删除segue,导航栏将从第二个表视图控制器中消失。下面是connections inspector显示的内容(添加到我的原始帖子中)。我想知道在什么情况下,默认情况下会出现取消按钮而不是后退按钮?我最后添加了一个“完成”按钮来“覆盖”取消按钮,代码几乎没有变化。谢谢