我可能创建的RootViewController,AppDelegate和View Controller类有什么区别?

时间:2010-09-02 11:43:18

标签: ios iphone xcode cocoa-touch

我正在尝试学习iPhone的编程,我一直看到这些文件,我不确定这些文件的每个文件和内容何时在执行为iPhone构建的程序时引用。我正在尝试按照在线提供的教程和技巧,但没有一点一点的比较或类似的东西。如果你们中的任何一个人能够列出一些基本的差异,例如每个文件何时被引用以及理想情况下应该进入每个文件等等,那将是很好的。谢谢你的时间。

1 个答案:

答案 0 :(得分:53)

通常,代理可以被认为是事件处理程序。因此,AppDelegate是整个应用程序的主要事件处理程序。当应用程序启动,何时退出,推送通知进入,应用程序进入后台等时,会告知它。其中一个事件 - applicationDidFinishLaunching - 通常负责创建应用程序窗口并添加视图那个窗口。

在大多数应用程序中,添加到窗口的视图实际上由UIViewController控制。每个UIViewController都负责管理一个主视图及其所有子视图的外观。例如,UITableViewController负责管理UITableView(主视图)和插入该UITableView的所有UITableViewCells(子视图)。 UIViewController通常充当它负责的视图的委托(事件处理程序)。当用户点击表视图单元格时,将调用UITableViewController中的方法。当用户滑动删除时,调用单独的方法。

通用UIViewController提供相同的基本功能,但适用于自定义视图。例如,UIViewController可能负责显示一些文本视图和一个按钮。 UIViewController将创建其主视图,文本视图和按钮视图。文本视图和按钮视图将作为子视图添加到视图控制器的主视图中。 UIViewController将自己注册为文本视图中事件的委托(例如,当用户在文本视图中完成文本编辑时学习)。它还会注册一种方法来处理来自其拥有的按钮的按钮按下。当发生任何这些注册事件时,会调用UIViewController上的方法,允许您采取任何所需的操作。

rootViewController是一种与导航控制器一起使用的特定类型的视图控制器。如果您想要一个具有典型iOS导航视图层次结构的应用程序,您的AppDelegate通常会将UINavigationController添加到应用程序的窗口。那个UINavigationController没用,实际上没有要显示的内容。这就是rootViewController发挥作用的地方。您负责提供视图控制器(例如上面描述的视图控制器)作为存储在UINavigationController的视图堆栈中的第一个视图。当应用程序启动时以及用户从UINavigationController的堆栈中弹出后续ViewControllers时,将显示此视图。

我意识到啰嗦 - 但希望它有所帮助。