IOS開發中委託代理(degegate)的理解和使用示例

委託代理(degegate),顧名思義,把某個對象要做的事情委託給別的對象去做。那麼別的對象就是這個對象的代理,代替它來打理要做的事。

反映到程序中,首先要明確一個對象的委託方是哪個對象,委託所做的內容是什麼。
委託機制是一種設計模式,在很多語言中都用到的,這只是個通用的思想,網上會有很多關於這方面的介紹。
那麼在蘋果開發過程中,用到委託的程序實現思想如下,我主要拿如何在視圖之間傳輸信息做個例子。
譬如:在兩個頁面(UIIview視圖對象)實現傳值,用委託(delegate)可以很好做到!
方法:
類A
@interface A:UIView
        id transparendValueDelegate;
       @property(nomatic, retain) id transparendValueDelegate;
@end

@implemtion A
@synthesize transparendValueDelegate
-(void)Function

      NSString* value = @"hello";
      //讓代理對象執行transparendValue動作
      [transparendValueDelegate transparendValue: value];
}
@end

類B
@interface B:UIView
      NSString* value;
@end

@implemtion B
-(void)transparendValue:(NSString*)fromValue
{
      value = fromValue;
      NSLog(@"the value is %@ ",value); 
}
@end

//下面的設置A代理委託對象爲B
//在定義A和B類對象處:

A* a = [[A alloc] init];
B* b = [[B alloc] init];
a. transparendValueDelegate = b;//設置對象a代理爲對象b

這樣在視圖A和B之間可以通過委託來傳值!

下面這個例子委託有兩類:
1、一個視圖類對象的代理對象爲父視圖,子視圖用代理實現讓父視圖顯示別的子視圖
2、同一父視圖下的一個子視圖爲另一個子視圖的代理對象,讓另一個子視圖改變自身背景色爲給定的顏色
===============================================
規範格式如下:
@protocol TransparendValueDelegate;

@interface A:UIView
id< TransparendValueDelegate > m_dTransparendValueDelegate;
@property(nomatic, retain) id m_dTransparendValueDelegate;
@end

//代理協議的聲明
@protocol TransparendValueDelegat<NSObject>
{
      -(void)transparendValue:(NSString*)fromValue;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章