2010-08-31 22 views
2

的編輯控制我推翻方法:改變一個UITableViewCell

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
      editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 

做一個加號按鈕旁邊出現一個細胞。用戶編輯單元格的內容後,我想將其從加號按鈕更改爲減號按鈕。邏輯已經用這種方法編寫了。問題是,即使這個方法被調用,並且它返回了正確的值,它也不會更新按鈕。

使用:

[myViewCell setNeedsLayout]; 

...不會導致[myTableView tableView:editngStyleForRowatIndexPath:]下運行。

調用

[tableView reloadRowsAtIndexPaths: ... withRowAnimation:UITableViewRowAnimationNone]; 

...確實很奇怪......它會導致[myTableView tableView:editngStyleForRowatIndexPath:]要對除了一個我在reloadRowsAtIndexPaths參數發送給所有行調用。

不管,因爲我插入行,該方法被調用我的所有行,包括我想改變。我檢查它是否返回UITableViewCellEditingStyleDelete。儘管它返回了正確的值,但它仍然顯示加號圖標而不是減號圖標。

調用[tableview reloaddata]不起作用。

UITableViewCell上有一個editingStyle屬性,它似乎可以解決我的問題,但它是隻讀的。 這就好像一旦tableView:editingStyleForRowAtIndexPath:方法已經設置editingStyle,這是不能改變的。那麼爲什麼當這些行滾動到視圖中時這種方法會被不斷調用呢?

我怎樣才能改變一個UITableViewCell的編輯控制?

您會注意到,在Apple的Contacts應用程序中,除了它從UITableViewCellEditingStyleNone而不是UITableViewCellEditingStyleInsert轉換爲相同的確切行爲。這可以通過編輯聯繫人,然後在最後一個手機字段中輸入一個數字(即添加一個新的電話號碼)來看到:當前行獲得一個減號按鈕,並在其下面添加一個新行。

回答

1

我有類似的問題,在我的應用程序兩個地方。我找不到在編輯時更改或更新單元格編輯樣式的方法,它開始令我發狂。

我有一個小區,我想添加一個減號,當用戶輸入了什麼東西,而另一種,我想刪除一個加號,當用戶單擊單元格,並把它改造成一個有效的字段。

我最終通過在該小區中調用

- (void) prepareForReuse; 

解決了這兩個問題。我不認爲這是一個優雅的解決方案,但它以某種方式起作用。如果我把這個方法之前,我開始編輯它會導致一些奇怪的動畫小故障,但如果我更新底層數據結構後內tableView beginUpdatestableView endUpdates叫它它完美的動畫效果,我想添加減號的情況。

在我的第二種情況下,通過在空的tableView beginUpdatestableView endUpdates序列之前調用此方法,無需動畫即可刪除加號。它看起來有點突兀,但只要功能在那裏,我就可以忍受。

+0

有沒有找到一個更好的解決方案呢?它是從左側開始動畫的東西,無論是 - 符號還是在本例中,用於清除單元格中文本字段內容的(x)。再加上在表格中的某些東西上運行prepareForReuse看起來很可怕。 – smparkes 2011-06-03 01:11:33

+0

cf http://stackoverflow.com/questions/5622431/update-editing-style-of-uitableviewcell-depending-on-contents – smparkes 2011-06-03 02:02:35