我正在開發一個包含多個視圖的簡單應用程序。 我有一個基礎視圖和第二個視圖,在基礎之後調用。 基本視圖充當第二個視圖的代表。iOS:從代理獲取實例變量值(屬性)
我想在第二個視圖中設置和檢索baseView('name')中的屬性值。 因爲在第二個視圖中,委託是secondViewDelegate對象,所以它沒有'name'方法。
baseView.h(跳過進口):
@interface baseView : UIViewController <secondViewDelegate> {
}
@property (retain) NSString *name;
@end
secondView.h(跳過進口):
@protocol secondViewDelegate;
@interface secondView : UIViewController{
}
@property (nonatomic,assign) id <secondViewDelegate> delegate;
@end
@protocol secondViewDelegate
- (void) secondViewDidFinish:(secondView *)controller;
@end
什麼是這裏通常的做法? 我真的需要爲協議實現一個getter和setter嗎?像:
@protocol secondViewDelegate
- (void) secondViewDidFinish:(secondView *)controller;
- (NSString *)getName;
- (void)setName:(NSString *)newName;
@end
或者有沒有什麼好的方法來實際訪問baseView屬性,或至少得到實例? (這是一個好主意嗎?)
我對iOS開發還是很新的,以防它不明顯。
沒錯,就是這樣!當我們處理它時,我可以在沒有委託協議的情況下執行此操作嗎?第二個視圖可以調用'[self dismissModalViewControllerAnimated:YES];',而不是在baseView中調用它? – jpimentel 2012-02-17 11:47:11
@ jpimentel:我不認爲這是可能的,視頻管理員誰提出也必須解僱。但這是一件好事,因爲它將責任保持在一個班級中。但是你可以重新設計你的協議,使它由帶有簽名'secondView:(secondView *)控制器didFinishWithName:(NSString *)名稱'的單一方法組成。 – herzbube 2012-02-17 21:31:05