我什么时候应该在IOS编程中使用UIViewController?

时间:2010-09-22 02:46:34

标签: objective-c uiview uiviewcontroller ios

我一直在寻找IOS编程的API,并且一直在阅读有关视图控制器和UIViews的内容。看起来UIViewController子类对模态导航和自定义动画非常有用,但我看不到除此之外的任何其他用途。

使用UIViewController子类而不是普通的NSObject子类有什么好处?

为什么

@interface MyViewController : UIViewController {
}

-(void)handleEvent;

@end

而不仅仅是

@interface MyViewController : NSObject {
    UIView* view;
}

@property(retain) UIView* view;
-(void)handleEvent;

@end

难道你最后只是将视图添加到窗口,而不是实际的viewController本身? 在大多数情况下,您需要封装在UIView对象中的所有功能吗? 您最终会像这样添加它:

[window addSubview:myViewControllerInstance.view]

除了Modal Navigation等内置功能外,UIViewController还有用吗?

感谢。

(对不起,如果这是一个愚蠢的问题,我已经学习了2天了)

2 个答案:

答案 0 :(得分:2)

Mac OS和iOS上的Cocoa大量使用Model-View-Controller(MVC)模式。在MVC模型之后,UIViewController是一个Controller类。它的工作是协调用户界面(View对象)和应用程序数据(Model对象)之间的交互。更基本的是,Controller主要用于放置应用程序逻辑的位置。它处理事件并相应地调用视图和模型。

请参阅UIViewController reference,其中对该课程有一个很好的概述。

通过从UIViewController派生,您可以免费获得一堆Controller功能,例如从Nib文件(initWithNibName:bundle :)加载视图并响应与视图相关的事件(viewWillAppear:,viewWillDisappear :)。另外,UIViewController本身是UIResponder的子类,它包含处理触摸事件的功能(touchesBegan:withEvent,touchesMoved:withEvent,touchesEnded:withEvent)。

基本上,没有理由不使用它提供的所有功能的UIViewController。即使你可以设法这样做,也会有更多的工作,没有真正的好处。

答案 1 :(得分:0)

看一下UIViewController类的属性和实例方法,如果你只是NSObject的子类,你就不会免费获得它们。你将在所有的应用程序中使用很多东西。