UINavigationCotroller backBarButtonItem与其他目标比self

时间:2012-12-14 15:37:06

标签: uinavigationcontroller action target backbarbuttonitem

我正在尝试通过按导航控制器的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,程序会崩溃)。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以更改backBarButtonItem的目标。那么self.navigationItem.leftBarButtonItem呢?在self.navigationItem.backBarButtonItem not working ?? Why is the previous menu still showing as the button?进行的讨论可能是相关的。