今晚一直在纠结这个,问题是这样的:
有一个viewControllerA:
在viewControllerA中有这样一段代码:UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewControllerB];
nav.modalPresentationStyle = UIModalPresentationFormSheet;
[viewControllerA presentModalViewController:nav animated:YES];
nav.view.superview.frame = CGRectMake(0,0 , 700, 560);
nav.view.superview.center = viewControllerA.view.center;
然后显示了viewControllerB,现在的问题是,我要怎么在viewControllerB中得到viewControllerA呢?
官方文档说parentViewController这个属性在ios5.0之后会返回nil,改用self.presentingViewController,可是还是不对啊,有人知道应该怎么得到吗?

解决方案 »

  1.   

    b 包在 nav 里了
    a 的 presentingViewController应该是 nav
      

  2.   

    那我怎么得到viewControllerA呢
      

  3.   

    应该可以在nav的viewControllers里找到,或者如果就一个的话,topViewController
      

  4.   


    b是被包在nav里,但a是在nav之外的,怎么会从nav的viewcontroller里得到呢?
      

  5.   

    啊,看错了,呵呵
    应该是b.navigationController 得到nav
    nav.presentingViewController 得到a
      

  6.   

    最简单的方式,使用属性传值,即:在B中声明一个A类的属性,在B弹出前,给B的此属性赋值就可以了。
      

  7.   

    最近在弄这个,发现presentingViewController返回的是除Modal外最顶层的ViewController,而不是弹出Modal的。所以可以通过Segue或者遍历nav stack获得