2010-05-05 113 views
1

我有一個UITableView與物品列表,如item1,item2,item3,item4等。iPhone應用程序開發 - UITableView DetailsView

如果我在item1上選擇,它將轉到item1的詳細視圖(由DetailsViewController控制)。

我想要做的是在DetailsView上添加一個名爲「Next」的按鈕。點擊後,DetailsView將刷新並顯示item2。當再次點擊時,它會顯示item3等。

我一直在尋找高和低執行。但無濟於事。

非常感謝提前!

回答

2

我會讓表視圖控制器的詳細信息視圖控制器的代表。然後做這樣的事情的細節視圖控制器:

-(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形式只意味着對象符合協議。

當表視圖控制器創建詳細視圖控制器時,它將自己設置爲委託。

+0

嗨,謝謝你的建議。 如何使表視圖控制器的詳細信息視圖控制器的代表?對不起,我是一名編程新手。 謝謝! – leo 2010-05-06 01:38:48