Ios5 UIABBARC控制器内的模态UIVIEW控制器&;导航控制器

Ios5 UIABBARC控制器内的模态UIVIEW控制器&;导航控制器,ios5,uiviewcontroller,uitabbarcontroller,Ios5,Uiviewcontroller,Uitabbarcontroller,我试图理解容器控制器及其子级之间的关系。我发现苹果在presentingViewController和parentViewController之间的区别有些武断。例如,我创建了一个故事板,其中包含一个UINavigationController的UITabBarController。导航控制器推入另一个UIViewController,该UIViewController依次显示模式视图控制器 故事板图像可在以下位置找到: 通过按下每个控制器上的ShowParentInfo按钮,我使用以下代码打印

我试图理解容器控制器及其子级之间的关系。我发现苹果在presentingViewController和parentViewController之间的区别有些武断。例如,我创建了一个故事板,其中包含一个UINavigationController的UITabBarController。导航控制器推入另一个UIViewController,该UIViewController依次显示模式视图控制器

故事板图像可在以下位置找到:

通过按下每个控制器上的ShowParentInfo按钮,我使用以下代码打印出了它的关系

- (IBAction)showParent:(id)sender {
const char *selfCls = class_getName(self.class);
NSLog(@"%@ = %p (%s)", self.title, self, selfCls);

const char *parentCls = class_getName(self.parentViewController.class);
NSLog(@"Parent Controller = %p (%s)", self.parentViewController, parentCls);

const char *presentingCls = class_getName(self.presentingViewController.class);
NSLog(@"Presenting Controller = %p (%s)", self.presentingViewController, presentingCls);

const char *navCls = class_getName(self.navigationController.class);
NSLog(@"Navigation Controller = %p (%s)", self.navigationController, navCls);

const char *tabCls = class_getName(self.tabBarController.class);
NSLog(@"TabBar Controller = %p (%s)\n\n", self.tabBarController, tabCls);
}
这将产生以下输出:

Root = 0x68ca810 (PTMasterViewController)
Parent Controller = 0x68ca610 (UINavigationController)
Presenting Controller = 0x0 (nil)
Navigation Controller = 0x68ca610 (UINavigationController)
TabBar Controller = 0x68ca3a0 (UITabBarController)

1st Push = 0x68d6f10 (PTMasterViewController)
Parent Controller = 0x68ca610 (UINavigationController)
Presenting Controller = 0x0 (nil)
Navigation Controller = 0x68ca610 (UINavigationController)
TabBar Controller = 0x68ca3a0 (UITabBarController)

Modal 1 = 0x68d7860 (PTMasterViewController)
Parent Controller = 0x0 (nil)
Presenting Controller = 0x68ca3a0 (UITabBarController)
Navigation Controller = 0x0 (nil)
TabBar Controller = 0x0 (nil)
根控制器和第一个推送控制器的关系是有意义的,但为什么模态控制器将UITabBarController显示为其呈现控制器?对我来说,这应该是第一个推控制器。甚至导航控制器也比选项卡栏控制器更有意义