iPhone在故事板中呈现和解散导航视图控制器?

问题描述:

我有呈现导航控制器与内容控制器根认为,这是它的样子: 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。

我该如何解决这个问题?

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

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

为了使这个代码更健壮,你可能要检查desitinationViewController是一个UINavigationController