2011-07-17 60 views
0

重新放入母細胞數據我有一個包含每個單元一個UITableView以下目標C:如何從子類

1)一個UILabel(上市誰在按鈕按下的人的名字)

2 )一個按鈕(當點擊時將把答題器的名字加到顯示在UILabel中的列表中)

該按鈕是UIControl的子類的一個實例。所以我的意圖是,當點擊按鈕時,我會將當前用戶添加到UILabel用於顯示的數組中。

不過,我不確定我怎樣可以重新加載(該按鈕包含)母細胞

只是再次重申我的問題

1)添加用戶名的榜單做在按鈕的子類中,而不是UITableViewCell,一旦我更新了數組,我該如何調用父單元格?

2)我不想重新加載整個表格,只是用戶點擊了按鈕的特定單元格。

預先感謝

回答

2

寫在視圖控制器,其是表視圖數據源,如一個操作方法:

-(IBAction)reloadCell:(id)theCell { 
    NSIndexPath *idxPath = [theTableView indexPathForCell:theCell]; 
    [theTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:idxPath, nil] 
         withRowAnimation:YES]; // or NO ;) 
} 

然後在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法,返回單元之前,對其進行配置,像這樣:

// ... 
[cell.theButton addTarget:self 
        action:@selector(reloadCell:) 
     forControlEvents:UIControlEventTouchUpInside]; 
return cell; 

這將使-(IBAction)reloadCell:(id)sender;方法觸摸按鈕時,並重新載入叫黨但是這個解決方案可能會讓你移動更新列表內容的代碼,因爲我不知道哪些消息會先發送(更新內容或重新加載單元格) 。

所以我認爲最好的方法是讓你的自定義按鈕子類對控制器有一個弱引用,所以按鈕可以更新內容,然後發送消息給控制器,並且基於相同的工作操作方法在控制器中。

在您的按鈕子類.H

YourControllerType *tableController; 

@property(assign) YourControllerType *tableController; 

在您的按鈕子類的.m

@synthesize tableController 

// in the method where you update the list 
[tableController reloadCell:self.superview]; 

而且不要忘了正確配置電池

// ... 
cell.theButton.tableController = self; 
return cell; 
+0

小錯誤,第一個參數爲'rel oadRowsAtIndexPaths:withRowAnimation:'是一個'NSArray',抱歉 – 2011-07-17 14:21:02