10

我知道有三個辦法可以改變iOS中是什麼addChildViewController和presentModelViewController

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?

回答

10

這四種完全不同的實現

  • addChildViewController在iOS5中是用來做什麼的viewController遏制,這將使你輕鬆創建自己NavigationCotrollersTabControllers它僅適用於iOS5的

  • addSubview是三者中最低的一個,這隻會增加一種觀點,作爲一個孩子

  • presentModalViewController用於模態呈現在屏幕上的viewController,因此覆蓋舊一個

  • UINavigationController用於推動一個新的ViewController到viewcontrollers堆棧pushViewController

+0

非常清楚!謝謝! – Ian

3

1)在IOS引入5作爲Apple允許視圖控制器層次的範例轉換的一部分,它只是將視圖控制器放在當前視圖控制器的前面。你必須管理控制器的流程。

2)與一個相同,除了一次只能爲一個視圖控制器完成。實際上,這種方法已被[self presentViewController:animated:completion:]所取代

3)將視圖控制器添加到列表中,以便在點擊'返回'後返回到前一個。 iOS將爲您管理控制器的流程。

+0

非常感謝!明確! – Ian