私は、これは、それがどのように見えるかで、コンテンツコントローラとナビゲーションコントローラを提示ルートビューを持っている: iPhoneがストーリーボードのナビゲーションビューコントローラーを表示したり解除したりしますか?
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のdelagateがLoginScreenViewControllerに設定されているとき、ProjectTypeControllerの代理人をLoginScreenViewControllerに設定することを忘れてしまいました。
これを正しく解決するにはどうすればよいですか?