1

我正在尝试通过按导航控制器的 backBarButtonItem 来更改执行的操作。我知道我必须在下一个视图(应该出现自定义行为的按钮)被按下之前编辑 backBarButtonItem。所以在之前的 ViewController 中我添加了以下代码,通过 segue 推送:

#pragma mark - segue methods

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"SettingsToProfile"]) {
        MyProfileViewController* myprofileVC = [segue destinationViewController];
        myprofileVC.myProfile = myProfile;
        self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings_" style:UIBarButtonItemStylePlain target:myprofileVC action:@selector(popTOSettingsViewController:)];
    } else {
        self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStylePlain target:nil action:nil];
    }
}

标题“Settings_”正确显示,但“target: myprofileVC action:@selector(popTOSettingsViewController:)”似乎根本没有任何效果。

背景:

MyProfileViewController 是一个视图,用户可以在其中编辑他/她自己的信息。每当单击后退按钮时,我都想检查用户是否更改了 GUI 中的某些内容。如果是这种情况,UIAlterView 应该询问用户是否要保存更改。我试图用 viewWillDissappear 解决它,但 AlterView 显示在下一个 ViewController 中(如果我单击 alterViewButtons,程序会崩溃)。

4

1 回答 1

0

我不确定您是否可以更改 a 的目标backBarButtonItem。换成怎么样self.navigationItem.leftBarButtonItem?self.navigationItem.backBarButtonItem有一个讨论不起作用?为什么上一个菜单仍然显示为按钮?这可能是相关的。

于 2012-12-14T16:00:05.437 回答