7

カスタムセグエを介して UIViewController をスタックにプッシュする単純な UINavigationController があります。次に、最初の UIViewController に IBAction を実装してアンワインド アクションを実行し、segueForUnwindingToViewController を実装します。残念ながら、segueForUnwindingToViewController は呼び出されていません (最初の VC で canPerformUnwindSegue が呼び出されていることを確認しました)。

この動作の単純な例は見たことがありません。誰でも助けてもらえますか?ありがとう。

NavigationController のルート ビュー コントローラのコードを次に示します。

- (IBAction) unwindFromSegue:(UIStoryboardSegue *)segue {
// unwinds back to here
//[self performSegueWithIdentifier:@"UnwindToObjectManageSegue" sender:self];

}

- (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController
                     withSender:(id)sender {
return YES;
}

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
return YES;
}

- (UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController
                                  fromViewController:(UIViewController *)fromViewController
                                          identifier:(NSString *)identifier {
ObjectManageObjectDetailSegue *segue = [[ObjectManageObjectDetailSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController];
[segue setUnwinding:YES];
return segue;
}
4

1 に答える 1

23

私は同じ問題を抱えていましたが、最終的に解決策を見つけました: https://github.com/simonmaddox/CustomUnwindSegue

彼はまた、それが呼び出されないという問題を抱えていました。UINavigationController にあるビュー コントローラーは、表示中のビュー コントローラーではなく、代わりに UINavigationController を呼び出します。これは、その UINavigationController をサブクラス化し、代わりにそのメソッドをそこに追加する必要があることを意味します。

于 2013-06-25T06:04:10.450 に答える