ナビゲーション コントローラーとコンテンツ コントローラーを表示するルート ビューがあります。これは次のようになります。
NavigationController はモーダルに表示され、ProjectTypeSelectionView はルート コントローラーです。ログアウトボタンをタップすると、モーダルビューを閉じてLoginScreenViewControllerに戻りたいです。
だから私はデリゲートとしてprepareSegue LoginScreenに設定しました:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UINavigationController *destination = segue.destinationViewController;
if ([[destination ] respondsToSelector:@selector(setDelegate:)]) {
NSLog(@"%@", destination);
[destination setValue:self forKey:@"delegate"];
}
}
次に、ProjectTypeViewController 内に次のメソッドを追加します。
- (IBAction)logout:(id)sender {
[self.delegate projectTypeSelectionViewControllerDidFinish];
}
ログアウトボタンがタップされたときに呼び出されます。驚いたことに、これはコントローラーを却下しません。すべてがつながっていても、何も起こりません。
私はこれにエラーを追跡しました - prepareSegue が呼び出されたときに、NavigationController のデリゲートが LoginScreenViewController に設定され、ProjectTypeController のデリゲートを LoginScreenViewController に設定する insetad が設定されます。
これを正しく解決するにはどうすればよいですか?