2010-09-02 36 views
10

我正在尝试学习iPhone的编程,并且我一直看到这些文件,我不确定每个文件和这些文件的内容在为iPhone构建的程序的执行过程中提及的内容。我正在尝试关注网上提供的教程和技巧,但是没有任何一个是通过点比较或类似的方式。如果你们中的任何人能列出几个基本的区别,比如每个文件被引用的时间以及理想地应该进入每个文件等等,那将是非常好的。感谢您的时间已经。RootViewController,AppDelegate和我可能创建的View Controller类之间有什么区别?

回答

47

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

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

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

rootViewController是与导航控制器一起使用的特定类型的视图控制器。如果你想要一个具有典型的iOS导航视图层次结构的应用程序,你的AppDelegate通常会在应用程序的窗口中添加一个UINavigationController。该UINavigationController没有实际的内容显示是无用的。这是rootViewController进场的地方。您有责任提供视图控制器(如上面描述的视图控制器)作为存储在UINavigationController的视图堆栈中的第一个视图。该视图将在应用程序启动时随时显示,并随时从UINavigationController的堆栈中弹出后续ViewController。

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

+0

完全有帮助。谢谢。我还有一个问题,如果它不要求太多,如果你可以看看它会很好:http://stackoverflow.com/questions/3651265/sqlite3-step-keeps-returning-sqlite-误用此查询任何指针。无论如何,感谢这个答案。 – kumar 2010-09-06 12:03:08

+1

关于AppDelegate,UIWindow,UIViewController,主视图,子视图等之间的关系的真棒解释仍然在2012年底有效。非常感谢 – Philip007 2012-11-03 07:38:28

+0

感谢@Peter,绝对是每种对象角色最有用和最简洁的解释之一。谢谢。 – 2016-09-18 17:01:57

相关问题