0

テーブルビュー ベースのナビゲーション コントローラーがあります。ルート ビュー コントローラーには、新しい項目を追加する + ボタンがあります。これにより、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() が表示されるので、呼び出されていることがわかります。

考え?

4

2 に答える 2

0

どのクラスunwindFromGoalEdit:ですか?「新しいアイテム」View Controllerに追加したようです...このメソッドはルートView Controllerに配置する必要があり、popToViewControllerを呼び出す必要はありません。ここでは空のメソッドで十分です。

于 2012-11-19T23:32:54.383 に答える