Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将导航栏“取消”按钮替换为“后退”按钮_Ios_Objective C_Uinavigationcontroller_Uibarbuttonitem - Fatal编程技术网

Ios 将导航栏“取消”按钮替换为“后退”按钮

Ios 将导航栏“取消”按钮替换为“后退”按钮,ios,objective-c,uinavigationcontroller,uibarbuttonitem,Ios,Objective C,Uinavigationcontroller,Uibarbuttonitem,我在导航控制器中嵌入了一个表视图控制器。表格单元格都是静态的,选择其中任何一个都将转到另一个表格视图。当segue发生时,导航栏显示新视图的“取消”按钮,而不是“返回”按钮 我可以在代码中添加一个后退按钮,如 - (void)viewDidLoad { self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back"

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


默认情况下,系统提供的后退按钮应为左栏按钮项,无需执行任何操作(代码或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显示的内容(添加到我的原始帖子中)。我想知道在什么情况下,默认情况下会出现取消按钮而不是后退按钮?我最后添加了一个“完成”按钮来“覆盖”取消按钮,代码几乎没有变化。谢谢