presentModalViewController究竟做了什么?

时间:2011-08-05 03:44:05

标签: ios uinavigationcontroller presentmodalviewcontroller

如果我有一个带有根视图控制器MyViewController实例的init的navigationController。

并在那个MyViewController的代码中 我可以用

AnotherViewController *vc = [[AnotherViewController alloc] init];
[self presentModalViewController:vc animated:YES];

AnotherViewController *vc = [[AnotherViewController alloc] init];
[self.navigationController presentModalViewController:vc animated:YES];

我发现这两件作品是一样的。两者都正确呈现模态视图。我发现所呈现的AnotherViewController的“parentViewController”属性都设置为导航控制器。

为什么会发生这种情况?presentModalViewController会自动检测到self是导航控制器的子视图并重新发送给导航控制器?

1 个答案:

答案 0 :(得分:0)

因为MyViewController是UINavigationController的根视图控制器,所以它获取了presentModalViewController的方便方法:animated:默认情况下。所以当你说self.navigationController时,它指的是presentModalViewController给你的相同的navigationController。我认为Apple只是试图让它更直观地使用便捷方法。