1

我有呈現導航控制器與內容控制器根認爲,這是它的樣子: enter image description hereiPhone在故事板中呈現和解散導航視圖控制器?

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。

我該如何解決這個問題?

回答

7
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

UINavigationController *destination = segue.destinationViewController; 
UIViewController *vc = [[destination viewControllers] objectAtIndex:0]; 
vc.delegate = self; 
} 

爲了使這個代碼更健壯,你可能要檢查desitinationViewController是一個UINavigationController

相關問題