我知道有三种方法可以在iOS中更改视图
1
[self addChildViewController:thirdViewController];
[contentView addSubview:thirdViewController.view];
2
First * sVC = [[First alloc] initWithNibName:@"First" bundle:[NSBundle mainBundle]];
[self presentModalViewController:sVC animated:YES];
3
MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease];
[self.navigationController pushViewController: sampleViewController animated:true];
pushViewController需要导航控制器,我理解。但是,何时使用addChildViewController和presentModalViewController ??
答案 0 :(得分:10)
这是四种完全不同的实现
addChildViewController
来进行viewController遏制,这样您就可以轻松创建自己的NavigationCotrollers
或TabControllers
仅在iOS5中可用
addSubview
是三者中的最低级别,这只会将视图添加到另一个视图中,作为孩子
presentModalViewController
用于在屏幕上以模态方式呈现viewController,从而覆盖旧的
pushViewController
在UINavigationController
中用于将新的ViewController推送到viewcontrollers堆栈,
答案 1 :(得分:3)
1),它只是将视图控制器放在当前视图控制器之前。你必须管理控制器的流程。
2)与一个相同,除了一次只能对一个视图控制器完成。实际上,此方法已被[self presentViewController:animated:completion:]
3)将视图控制器添加到列表中,以便在点击“返回”后返回上一个视图控制器。 iOS将为您管理控制器流程。