【问题标题】:iPhone presenting and dismissing navigation view controller in storyboards?iPhone在故事板中呈现和关闭导航视图控制器?
【发布时间】:2012-05-02 04:13:48
【问题描述】:

我有显示导航控制器和内容控制器的根视图,它是这样的:

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。

我该如何正确解决这个问题?

【问题讨论】:

    标签: iphone uinavigationcontroller presentmodalviewcontroller uistoryboard


    【解决方案1】:
    - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    
     UINavigationController *destination = segue.destinationViewController;
    UIViewController *vc = [[destination viewControllers] objectAtIndex:0];
    vc.delegate = self;
    }
    

    为了使这段代码更健壮,您可能需要检查目标视图控制器是否为 UINavigationController

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-12
      • 2020-05-30
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多