我正在为 iPhone 编程,我想知道何时使用视图的 addSubview 方法以及何时使用模态视图控制器 (presentModalViewController)。如果您使用的是导航控制器(我不是)并且您可以使用 pushViewController 方法,则更复杂的是?
你什么时候使用每个,为什么?
谢谢。
我正在为 iPhone 编程,我想知道何时使用视图的 addSubview 方法以及何时使用模态视图控制器 (presentModalViewController)。如果您使用的是导航控制器(我不是)并且您可以使用 pushViewController 方法,则更复杂的是?
你什么时候使用每个,为什么?
谢谢。
-presentModalViewController
并且-pushViewController
是处理同一件事的两种方式:显示新视图。您使用哪种取决于您想要的用户体验。它们对用户意味着不同的东西,但在实现上非常相似。
-addSubview
完全不同。它将组件添加到当前视图。您永远不应该使用它来显示独立的 UI。-addSubview
在以编程方式创建 UI 时最常使用-loadView
,尽管它还有许多其他用途。
这是看待它的一种方法:
单个导航控制器中的一系列视图控制器代表用户头脑中的单个工作流。如果在某些时候您需要中断当前的工作流程并创建一个发散的工作流程,您可以创建一个模态对话框。如果新的工作流程只有一个步骤,您只需提供相应的控制器,但如果有很多步骤,您创建一个新的导航控制器以将这些步骤串在一起。
视觉效果不同 - 导航控制器用户的注意力从左到右移动,而模态对话框从上到下。想象一下,你正在翻一本书(从左到右),在某个时刻你把书从你身边移开,然后从桌子下面拉出另一本书放在你面前(从上到下),然后开始浏览另一本书(从左到右)。然后你关闭整个第二本书并回到你离开的第一本书。
addSubview 方法位于不同的抽象平面上 - 子视图用于创建我上面描述的两种体验。您可以使用子视图来创建在相同抽象级别上的不同体验。UIAlertView 和 UIActionSheet 是同一级别的构造的更多示例。