我一直想知道什么时候在iPhone上使用UIView和UIViewController.

我知道除非是全屏视图,否则不应该使用UIViewController,但还有什么其他指导原则?

例如,我想构建一个模式覆盖——一个在当前屏幕上滑动到位的屏幕.如果这个模式覆盖是全屏的,它应该是UIViewController吗?上次我构建这样的东西时,我将UIViewController子类化,但现在我想知道这是否正确.

推荐答案

来自苹果View Controller Programming Guide for iOS强:

视图控制器最重要的作用是管理视图的层次 struct .每个视图控制器都有一个根视图,包含视图控制器的所有内容.您可以将显示内容所需的视图添加到该根视图中

也:

"有两种类型的视图控制器:

  • 内容视图控制器管理应用程序内容的一部分,是您创建的主要视图控制器类型.
  • 容器视图控制器从其他视图控制器(称为子视图控制器)收集信息,并以便于导航或以不同方式呈现这些视图控制器的内容的方式呈现信息.

大多数应用程序是两种视图控制器的混合."

Objective-c相关问答推荐

NSString "nil or empty" 判断 - 这完成了吗?

如何在运行时向对象添加属性?

在 Objective C 中动态调用类方法

Objective-C 和 Cocoa 有什么区别?

在 Interface Builder 中设计 UITableView 的section header

是否需要 ARC 中的 NSNotificationCenter removeObserver?

如何更改图像 tintColor

如何以编程方式暂停 NSTimer?

在 iOS 设备上本地存储图像

如何调整 UIModalPresentationFormSheet 的大小?

无法在 Interface Builder (Xcode 5) 中创建与子视图的出口连接

检测 iOS 应用程序是否在调试器中运行

如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

如何从设置屏幕打开位置服务屏幕?

无法将 searchBar 设置为 firstResponder

如何减小使用 UIImagePickerController 创建的视频的文件大小?

检测平移手势结束

NSString 中子字符串的出现次数?

iOS 10 中的错误:无法从 https://mesu.apple.com/assets/ 复制assets资源信息以获取assets资源类型

Xcode 的不完整实现警告