2010-09-22 84 views
6

我一直在尋找IOS編程的API,並一直在閱讀關於視圖控制器和UIViews。它看起來像UIViewController子類對Modal導航和自定義動畫非常有用,但我看不到任何其他用途。什麼時候應該在IOS編程中使用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] 

是否有其他的UIViewController一個比使用內置的類似模式導航功能?

謝謝。

(很抱歉,如果這是一個愚蠢的問題,我一直在學習這2天)

回答

2

Mac OS和iOS上的Cocoa大量使用Model-View-Controller(MVC)模式。在MVC模型之後,UIViewController是一個Controller類。它的工作是協調用戶界面(視圖對象)和應用程序數據(模型對象)之間的交互。更基本的是,Controller主要是放置應用程序邏輯的地方。它根據視圖和模型處理事件和調用。

請參閱UIViewController reference,它對課程有很好的概述。通過派生自UIViewController,您可以免費獲得一堆控制器功能,例如從Nib文件(initWithNibName:bundle :)加載視圖並響應與視圖相關的事件(viewWillAppear:,viewWillDisappear :)。此外,UIViewController本身是UIResponder的子類,它包含處理觸摸事件(touchesBegan:withEvent,touchesMoved:withEvent,touchesEnded:withEvent)的功能。

基本上,沒有理由不使用UIViewController及其提供的所有功能。即使你可以做到這一點,但這將是更多的工作,沒有真正的好處。

+1

事情是,在我使用或開發的大多數Model-View-Controller體系結構中,控制器完全獨立於視圖。這些「視圖控制器」鼓勵視圖與控制器之間的這種緊密耦合 - 我是否應該製作一個更大的控制器類來在各個視圖控制器與模型之間進行通信? – user434565 2010-09-22 22:21:44

+0

MVC模式不會將控制器與視圖分離。如果你看MVC圖,你會發現實際上,控制器部分直接處理模型和視圖。一個'UIViewController'已經關心了你對「視圖」的大部分「控制」。 – 2012-02-09 00:45:53

+0

爲什麼沒有'Model'類可以從中繼承? – 2014-10-28 12:51:24

0

看看屬性和UIViewController類,你不會得到免費的,如果實例方法你只是子類NSObject。那裏有很多東西,你會在所有的應用程序中使用。

相關問題