我會讓表視圖控制器的詳細信息視圖控制器的代表。然後做這樣的事情的細節視圖控制器:
-(IBAction) nextButtonClicked:(id)inSender {
NSDictionary *data = [delegate detailView:self nextDetailsForCurrent:myDetails];
if (data) [self setDetails:data];
}
你可以做比這個過於簡單化的方法更健壯的委託協議,但希望這將讓你開始。
編輯:
沒有什麼本質上特別的委託。它只是代表另一個對象作出決定的一個對象。在Objective-C中,委託通常被定義爲一個協議,儘管它只是一個NSObject的類別。
這樣創建委託協議:
@protocol DetailDelegate <NSObject>
-(NSDictionary *) detailController:(DetailController *)sender nextDetailsForCurrent:(NSDictionary *)current;
@end
給詳細視圖控制器的特性是這樣的:
@property (nonatomic,assign) id<DetailDelegate> delegate;
通知的assign
代替retain
。按照慣例,代表不被保留,儘管它必須在另一個對象的生命中保持有效。 id形式只意味着對象符合協議。
當表視圖控制器創建詳細視圖控制器時,它將自己設置爲委託。
嗨,謝謝你的建議。 如何使表視圖控制器的詳細信息視圖控制器的代表?對不起,我是一名編程新手。 謝謝! – leo 2010-05-06 01:38:48