如何将RootViewController更改为另一个XIB?

时间:2011-11-01 22:03:09

标签: ios xcode ipad uiviewcontroller modal-dialog

我试图理解ViewControllers的基本概念。出于我的目的,我需要切换XIB(不是模态),但完全是为了节省内存。基本上我想调用另一个XIB并使用它的功能,然后按下该XIB上的一个按钮,加载另一个XIB。

-(IBAction)GoToPage:(id)sender
{
    GoToPage *gotopage = [[[GoToPage alloc] init] autorelease];
    [self presentModalViewController:gotopage animated:YES];
}

我知道上面的代码只是模态地添加了一个子视图。有人能引导我朝着正确的方向前进吗?

这是一本iPad书。

1 个答案:

答案 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