Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 什么';RootViewController、AppDelegate和我可能创建的视图控制器类之间的区别是什么?_Ios_Iphone_Xcode_Cocoa Touch - Fatal编程技术网

Ios 什么';RootViewController、AppDelegate和我可能创建的视图控制器类之间的区别是什么?

Ios 什么';RootViewController、AppDelegate和我可能创建的视图控制器类之间的区别是什么?,ios,iphone,xcode,cocoa-touch,Ios,Iphone,Xcode,Cocoa Touch,我正在努力学习iPhone的编程,我一直看到这些文件,我不确定在为iPhone构建的程序的执行过程中,这些文件的每个文件和内容是什么时候提到的。我正在努力学习网上提供的教程和技巧,但是没有一个地方可以进行逐点比较或者类似的东西。如果你们能列出一些基本的区别,比如每个文件何时被引用,理想情况下每个文件应该包含哪些内容等等,那就太好了。已经感谢您的时间了。通常,可以将代理视为事件处理程序。因此,AppDelegate是整个应用程序的主事件处理程序。应用程序何时启动、何时退出、推送通知何时进入、应用程

我正在努力学习iPhone的编程,我一直看到这些文件,我不确定在为iPhone构建的程序的执行过程中,这些文件的每个文件和内容是什么时候提到的。我正在努力学习网上提供的教程和技巧,但是没有一个地方可以进行逐点比较或者类似的东西。如果你们能列出一些基本的区别,比如每个文件何时被引用,理想情况下每个文件应该包含哪些内容等等,那就太好了。已经感谢您的时间了。

通常,可以将代理视为事件处理程序。因此,AppDelegate是整个应用程序的主事件处理程序。应用程序何时启动、何时退出、推送通知何时进入、应用程序何时进入后台等都会被告知。其中一个事件——ApplicationIDFinishLaunching——通常负责创建应用程序的窗口并向该窗口添加视图

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

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

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


我意识到这是一个长篇大论,但希望能有所帮助。

完全有帮助。谢谢我有另一个问题,如果它不要求太多,如果你能看一看就好了。谢谢你的回答。关于AppDelegate、UIWindow、UIViewController、主视图、子视图等之间关系的精彩解释在2012年末仍然有效。非常感谢Hanks@Peter,这绝对是对每种类型对象的作用最有用、最简洁的解释之一。谢谢