0

我在导航控制器中嵌入了一个表格视图控制器。表格单元格都是静态的,选择其中任何一个都将转到另一个表格视图。当 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里面也没什么可做的。

这是连接检查员显示的内容

连接检查员

这是“条形按钮项目 - 返回”的连接

条形按钮项目 - 返回

4

3 回答 3

0

默认情况下,系统提供的后退按钮应该是左侧栏按钮项,而无需执行任何操作(在代码中或在 IB 中)。

在 Connections 检查器中删除与 backBarButton 的连接。从 IB 的导航栏中删除后栏按钮。删除代码中后栏按钮的出口。运行您的应用程序,您应该会看到免费为您提供的返回栏按钮。

于 2013-09-30T02:34:57.053 回答
0

如果没有默认的后退按钮不起作用,请自定义代码

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
于 2013-10-01T02:24:13.160 回答
0

为什么你在 didselectrow 中执行 segue 而不是仅仅推动视图控制器?

尝试 [self.navigationController pushViewController:YOURVIEWCONTROLLER];

这将确保您有一个后退按钮。此外,您必须使用这样的 segue,确保您正在使用 push segue 到您的下一个控制器。看起来您在第二个 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";
}
于 2013-10-01T05:04:24.427 回答