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

use*_*565 6 objective-c uiviewcontroller uiview ios

我一直在寻找IOS编程的API,并且一直在阅读有关视图控制器和UIViews的内容.它看起来像UIViewController的子类是模式导航和自定义动画真的很有用,但我看不到任何其他用途比.

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

为什么

@interface MyViewController : UIViewController {
}

-(void)handleEvent;

@end
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

@interface MyViewController : NSObject {
    UIView* view;
}

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

@end
Run Code Online (Sandbox Code Playgroud)

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

[window addSubview:myViewControllerInstance.view]
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

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

zpa*_*ack 2

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

请参阅UIViewController 参考,其中对该类有很好的概述。

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

基本上,没有理由不使用 UIViewController 及其提供的所有功能。即使你能设法做到这一点,也会付出更多的努力,而且没有任何实际好处。