2010-05-22 73 views
0

我已經從我的自定義UITableViewCell類實現了編輯菜單。我有一個從自定義表單元格類中更新表視圖的小問題。什麼是最好的方法來做到這一點?更改後自定義單元格更新uitableview

TIA

澄清:通過編輯菜單我是一個標準的剪切/複製/粘貼...菜單,可與標準UIResponder協議的規定。我想剪切/複製/粘貼單元格內容,這些內容駐留在某些數據結構(文件夾/文件樹的種類)中。單元格實際上只反映數據。

菜單顯示在水龍頭&舉行表格單元格。該表是從UITableViewController派生的,並且是在飛行中創建的(而不是從xib)。對文件夾&文件允許剪切/複製操作,而僅對文件夾允許粘貼操作。其實我只需要刷新文件夾單元格,它顯示了裏面的項目數量。

所以在我的貼選擇CustomCell我做到以下幾點:

- (void)paste:(id)sender { 
    ... Perform a paste of data... 
    MyTableViewController *myTable = (MyTableViewController *) delegate; 
    [myTable performSelector:@selector(updateData) withObject:nil afterDelay:0.3]; 
} 

在MyTableViewController:

- (void) updateData 
{ 
    [self.tableView reloadData]; 
} 

的事情是,不同之處在於改變了一個所有細胞是重繪。我在cellForRowAtIndex函數中看到它。即使我添加了粘貼選擇器[self setNeedsDisplay]也沒有幫助。

而且,我的自定義單元格覆蓋setHighlighted功能:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { 
    if (delegate) 
    [delegate copyableTableViewCell:self willHighlight:highlighted]; 
    [super setHighlighted:highlighted animated:animated]; 
} 

所以委託(MyTableViewController)顯示有一個編輯菜單。 再次,問題是爲什麼更改的單元格不刷新?

謝謝

+0

你的問題是一種模糊的。什麼是「編輯菜單」? UIActionSheet可能,或新的視圖推入導航堆棧? 「更新」是指編輯,添加還是刪除表格視圖單元格?發佈一些代碼,例如表格視圖數據源中的'cellForRowAtIndexPath:'方法也會有所幫助。 – Endemic 2010-05-23 04:47:59

回答

0

已解決。在調用MyTableViewController:

- (void) updateData 
{ 
    [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.3]; 
} 

和它的工作...

0

你想更新單個單元格或整個tableview嗎?怎麼樣的代表或選擇?

+0

它可以是單個單元格。我嘗試了代表和選擇器。我也試過performSelector afterDelay,它沒有被調用。最佳做法是什麼? – 2010-05-22 19:33:26