我得到了關於更新我的TableView一個棘手的問題,我得到使用更新它的不同的方法不同的結果,讓我解釋一下:的TableView reloadData與beginUpdates&endUpdates
情況1: 我用[tbl reloadData];
其中tbl
是我的TableView,更新TableView - 按預期工作。
情況2: 我使用:
[tbl beginUpdates];
[tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
[tbl endUpdates];
哪裏tbl
是我的TableView,和indexPaths
是包含所有存在於所述的TableView indexPaths陣列。現在數組很好,它包含了所有正確的indexPaths(雙重和三重檢查),但出於某種原因 - 這不能按預期工作。
現在我意識到這是一個XY問題(我問Y的問題,但我的問題實際上是X,因爲我認爲解決Y將解決X),那只是因爲我覺得解釋X有點複雜說上面的問題)以一種簡單的方式,所以我寧願不要這樣做,如果可能的話。
因此,回到我的問題:更新TableView的兩種方式(當然除了動畫位)之間是否存在差異,或者我應該懷疑問題存在於其他位置?
編輯: 好吧,我會盡量解釋什麼症狀:
在cellForRowAtIndexPath
- 方法我添加一個按鈕,每個單元有分配的標籤等於細胞的indexPath行像這樣的:
btn.tag = indexPath.row;
我之所以這樣做,這是這樣我就可以識別每個按鈕都調用相同的功能:
- (void)btnPressed:(id)sender
當我然後更新單元格 - 因爲單元格中的某些值已更改 - 情況1使一切正常工作,情況2然而 - 混合標記,以便下一次按下其中一個按鈕時,它們不再具有正確的標籤。
混淆確實對我來說看起來是隨機的,但隨機發生的方式取決於我先按哪個單元格按鈕。我希望這能夠澄清我的問題。
「我得到了不同的結果」,「這不符合預期。」以什麼方式? – TigerCoding
那麼,每個單元格在創建時都會得到一個按鈕,並帶有一個標籤,其中'按鈕標籤=索引路徑行'。在情況1中,按鈕在情況2中獲得正確的標籤 - 它沒有。 –