我试图理解ViewControllers的基本概念。出于我的目的,我需要切换XIB(不是模态),但完全是为了节省内存。基本上我想调用另一个XIB并使用它的功能,然后按下该XIB上的一个按钮,加载另一个XIB。
-(IBAction)GoToPage:(id)sender
{
GoToPage *gotopage = [[[GoToPage alloc] init] autorelease];
[self presentModalViewController:gotopage animated:YES];
}
我知道上面的代码只是模态地添加了一个子视图。有人能引导我朝着正确的方向前进吗?
这是一本iPad书。
答案 0 :(得分:2)
我建议您阅读Apple的View Controller Programming Guide for iOS,以便深入了解视图控制器的用途。
作为一个快速概述,视图控制器通常负责管理手机大小的设备上的单个“屏幕”内容,或iPad上的一部分屏幕,因为可以在iPad上使用多个视图控制器,例如UISplitViewController
。如果要在iPad上的全屏视图控制器之间进行动画处理,可以使用UINavigationController
,它管理视图控制器的层次结构。您没有提及GoToPage
继承的内容,无论是UIView
还是UIViewController
。在您的情况下,它应该是UIViewController
的子类。
使用UINavigationController
将允许您管理多个UIViewController
子类,同时保持层次结构,以便用户可以导航回以前的视图控制器。您可以使用-pushViewController:animated:
将视图控制器子类的新实例推送到导航控制器的视图控制器堆栈,并在大多数情况下由UINavigationController
自动处理导航。
XIB只是封装了用户界面,而不是任何用户定义的代码。 XIB的文件所有者代理应设置为您的UIViewController
子类,这允许您通过使用{{1}来弥合XIB上的接口元素与UIViewController
子类内的代码之间的差距。您的子类的{}和IBOutlet
属性。
最后,如果您仅针对iOS 5.0,我建议您查看IBAction
,它管理多个视图控制器,并允许您使用类似iBooks的页面转动动画在它们之间进行切换。首先,请阅读View Controller编程指南 1