テーブルビュー ベースのナビゲーション コントローラーがあります。ルート ビュー コントローラーには、新しい項目を追加する + ボタンがあります。これにより、View Controller へのプッシュ セグエが発生し、ユーザーは新しいアイテムのデータを入力できるようになります。
このビュー コントローラでは、左上のナビゲーション バー アイテムは標準のラベルの付いた「戻る」ボタンです。「保存」[バー] ボタン [アイテム] を右上のナビゲーション バー アイテムとして配置しました。
アンワインド IBAction プッシュ ビュー コントローラーを作成しました。
次に、[保存] ボタンからビュー コントローラーの出口までコントロールをドラッグし、巻き戻し IBAction に接続しました。
[保存] ボタンをクリックすると、この巻き戻しアクションが呼び出されます。
ただし、巻き戻しアクションで何もしないと、View Controller がポップされません。ここに小さなコードがあります:
- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender {
return YES;
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
NSLog( @"Should seque from %@", identifier );
return YES;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
}
- (IBAction)unwindFromGoalEdit:(UIStoryboardSegue *)segue {
NSLog( @"UNWINDING!!");
[self.navigationController popToViewController:segue.destinationViewController animated:YES];
}
以下のアンワインド アクションでは、View Controller をポップするさまざまな方法を試しました。しかし、何も起こりません。実行時エラーも何もありません。ただし、 NSLog() が表示されるので、呼び出されていることがわかります。
考え?