从基于标准视图的应用程序中,我发现生成的代码执行了此操作:
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子类吗?
答案 0 :(得分:3)
这取决于您希望它如何在视觉上工作。您是否希望用户能够从这个新视图返回到原始视图?然后你应该使用UINavigationController
作为窗口的根视图控制器。除了能够返回到原始视图之外,默认情况下您还可以获得漂亮的动画效果 - 使用户比简单的交换效果更令人愉悦。
您在应用中看到的几乎每个控件都是UIView
的子类 - 您无需为所有控件创建视图控制器。您通常需要视图控制器的是每个新“屏幕”的基本视图。通常是的,您可以为每个视图创建子类UIViewController
或UITableViewController
。
答案 1 :(得分:1)
这样做。
在viewController类中,要在哪个事件上切换视图,请使用
- 制作appDelegate类的对象, 然后在这个对象上访问该窗口。 - 为新视图创建对象 - 并将其添加到窗口。
看到这个,
YourAppDelegate *obj=(YourAppDelegate *)[[UIApplication sharedApplication] delegate];
abcViewController *objAbc=[[[abcViewController alloc] initWithNibName:@"abcViewController" bundle:nil] autorelease];
[obj.window addSubview:objAbc.view];