Navigation ControllerのbackBarButtonItemを押して実行されるアクションを変更しようとしています。次のビュー (カスタム動作のボタンが表示される) が押される前に、backBarButtonItem を編集する必要があることはわかっています。そのため、前の ViewController で、次のコードを追加して、セグエ経由でプッシュしました。
#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 は、ユーザーが自分の情報を編集できるビューです。backbarbutton がクリックされるたびに、GUI の何かがユーザーによって変更されたかどうかを確認したいと思います。その場合、UIAlterView は、変更を保存するかどうかをユーザーに尋ねる必要があります。viewWillDissappear で解決しようとしましたが、次の ViewController に AlterView が表示されます (また、alterViewButtons をクリックするとプログラムがクラッシュします)。