2012-03-27 29 views
0

我有一組協議用在我的幾個UIViewControllers上。有沒有一種方法可以設置在協議設置時在其上運行的默認代碼。還有一種方法讓他們像UIViewController生命週期一樣工作,例如,當一個UIViewController加載它時呢?設置協議和加載生命週期

- (void)viewWillLoad; 
- (void(viewDidLoad; 
- (void)viewWillAppear:(BOOL)animated; 
- (void)viewDidAppear:(BOOL)anmated; 

回答

1

要獲取代碼,當屬性被設置爲運行(我假定這就是你的意思是什麼?)你可以重寫合成的setter方法

@synthesize value = _value; 

- (void)setMyProperty:(id <MyProtocol>)value { 
    if (value != value) { 
     _value = value; 

     // Insert your code here 
     ... 
    } 
} 

如果您想您的所有視圖控制器的行爲同樣的方式,他們你能提供的UIViewController的一個子類共同即

@interface AbstractViewController : UIViewController { 
... 
} 

,然後,所有的「真實」的視圖控制器會從繼承,而不是直接從UIViewController中:

@interface MainViewController : AbstractViewController { ... } 

@interface DetailsViewController : AbstractViewController { ... } 

如果添加你的財產(和你重寫setter方法),以抽象的視圖控制器,那麼所有你真正的視圖控制器將免費獲得該功能。

我希望這很有幫助。如果不是,請在您的問題中添加更多信息,我們可以再試一次:)

+0

沒有那麼好解釋了很多。 – Popeye 2012-03-27 10:37:29