什么是IOS中的SetViewController

时间:2016-05-16 06:27:18

标签: ios

案例开发人员更喜欢IOS中的SetViewController是什么?

IOS中的setViewController和PushViewController有什么区别?

请帮帮我

感谢。

2 个答案:

答案 0 :(得分:2)

首先它不是SetViewController,而是setViewControllers,因为它设置了array of view controller

您只能将视图控制器设置为navigation controllertabbar controllerpushviewcontroller只能navigation controller而不是tabbar controller

现在让我们理解navigation stack

的概念

例如,您有一个导航控制器说nav

它没有任何对象(视图控制器)。

现在举个例子,你有三个视图控制器的数组,比如A,B & C' and you set that array to you导航控制器`,

  [self.navigationController setViewControllers:viewControllerArr];

然后您的导航堆栈变得像

A -> B -> C (top of stack)

现在你将一个视图控制器推送到同一个导航堆栈,让它说出D之类的东西,

 [self.navigationController pushViewController:D animated:YES];

然后你的导航堆就像了,

A -> B -> C -> D (top of stack)

现在,如果你弹出一个类似的视图控制器,

  [self.navigationController popViewControllerAnimated:YES];

然后它弹出堆栈顶部,然后你的堆栈看起来像,

 `A -> B -> C (top of stack)`

再次弹出一个,

 `A -> B  (top of stack)`

因此,set和push视图控制器之间的主要区别在于,当你设置viewcontrollers时,你设置的数组意味着多个数组。所以,我们可以说setViewController是初始控制器初始化导航控制器(初始化导航堆栈)

push或pop正在向导航堆栈添加或从导航堆栈中删除视图控制器。

希望这会有所帮助:)

答案 1 :(得分:0)

导航控制器用于管理一组视图控制器。您可以一次一个地将控制器“推”到堆栈上(这几乎是您几乎所有的时间),或者您可以一次性“设置”包含多个控制器的堆栈。 Read the manual.