直接分配新的UIViewController或UIView?

时间:2011-08-30 02:18:32

标签: iphone xcode uiview uiviewcontroller

从基于标准视图的应用程序中,我发现生成的代码执行了此操作:

self.window.rootViewController = self.viewController;

所以我认为AppDelegate(self)有一个名为viewController的局部变量(声明属性),它是UIViewController的子类,self.window.rootViewController指向这个视图控制器。

当在屏幕上点击按钮时,我想跳转到新视图。

现在我已经创建了一个新的UIViewController子类,比如abcViewController和一个代表视图的xib文件。我应该:

(1)将“viewController”替换为“abcViewController”,使其成为新的Application Delegate窗口的新rootViewController

[self.view removeFromSuperview];
[self.parentViewController.view addSubview:abcViewController];

我是直接添加/删除视图,还是应该交换视图控制器,然后执行某些操作来更改该视图控制器中的视图?对于我想要添加到App的每个视图,我还需要一个新的UIViewController子类吗?

2 个答案:

答案 0 :(得分:3)

这取决于您希望它如何在视觉上工作。您是否希望用户能够从这个新视图返回到原始视图?然后你应该使用UINavigationController作为窗口的根视图控制器。除了能够返回到原始视图之外,默认情况下您还可以获得漂亮的动画效果 - 使用户比简单的交换效果更令人愉悦。

您在应用中看到的几乎每个控件都是UIView的子类 - 您无需为所有控件创建视图控制器。您通常需要视图控制器的是每个新“屏幕”的基本视图。通常是的,您可以为每个视图创建子类UIViewControllerUITableViewController

答案 1 :(得分:1)

这样做。

在viewController类中,要在哪个事件上切换视图,请使用

- 制作appDelegate类的对象, 然后在这个对象上访问该窗口。 - 为新视图创建对象 - 并将其添加到窗口。

看到这个,

    YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 

abcViewController *objAbc=[[[abcViewController alloc] initWithNibName:@"abcViewController" bundle:nil] autorelease];

    [obj.window addSubview:objAbc.view];