在iPhone的開發過程中經常要用到介面,而蘋果公司為其設計了很好的管理思路,就是採用常用的MVC模式,在iPhone中,所有的圖形控制項都是繼承於UIView,就是"V".UIView及其子類主要負責UI的實現,而UIView所產生的事件都可以採用委託的方式,交給UIViewController實現.對於不同的 UIView,都有相應的UIViewController 對應MVC中的"C".對於"M",也就是資料模型,那就留給使用者自己發揮了.
Objective-C只支援單繼承,和java很像,單可以實現多個協議(Protocol).
首先,定義個View
1.@interface MyUIView : UIView {
2.
3.
4. //定義一些控制項
5.
6. id<MyUIViewDelegate> delegate; //這個定義會在後面的解釋,它是一個協議,用來實現委託。
7.
8.}
9.
10.//定義一些控制項設定方法
11.@property id<MyUIViewDelegate> delegate; //定義一個屬性,可以用來進行get set操作
12.
13.@end
然後定義一個Protocol,按照Cocoa的習慣,一般它以delegate結尾,熟悉C#的同學應該知道它的意義.其實不論是介面,委託,還是回呼函數,本質上都做了一件事情.就是定義了一個操作契約,然後由使用者自己來實現它的具體內容.
1 @protocol MyUIViewDelegate
2 //這裡只需要聲明方法
3 - (void)func1
4 - (int)func2:(int)arg
5
6 @end
完成以上兩步之後就需要設計自己的UIViewController了.一般簡單的做法,可以讓這個Controller來實現上面定義的MyUIViewDelegate.在Cocoa架構中,很多控制項和它的Controller都是採用的這種方式.
1.@interface MyUIViewController : UIViewController <MyUIViewDelegate>
2.{
3.//成員變數
4.}
5.
6.//成員方法,類方法,屬性
7.
8.@end
定義好了,現在,你只要在MyUIViewController中聲明MyUIView成員變數,並把自己作為委派物件傳給MyUIView,就可以成為MyUIView的代理,這樣,當MyUIView某事件發生時就可以調用MyUIViewController中實現的委託方法了.
說的很是淺顯,具體實現請自己完成,自己練習.
by MAC-z