2011-04-14 14 views
0

我的應用程序有3個選項卡,並且可以在其他兩個選項卡中更改在第三個選項卡中填充tableView的數組。當我切換到第三個選項卡時,我需要更新tableView。我知道如何做到這一點,唯一的問題是表視圖是一個檢查列表。當切換回TabView時更新帶有AccessoryCheckmark的tableView

當我在第三個選項卡中選中某些行時,切換到另一個選項卡並更新第三個選項卡的數組,當我想切換回第三個選項卡時,該表使用新數據更新,但刪除了選項標記從桌子上。

有沒有辦法更新表格而不刪除複選標記?

回答

0

你如何確定一個項目是否被檢查?這聽起來像你可能沒有存儲對象的檢查狀態,而只是將單元上的accessoryType設置爲UITableViewCellAccessoryCheckmark。如果是這樣,你需要添加一個布爾屬性到存儲在數組中的對象,該對象將表示該項目是否當前被選中。

一旦存儲這個值,你可以配置你的tableview細胞時使用它(在tableView: cellForRowAtIndexPath:configureCell: atIndexPath:或其他任何地方,你做電池配置)來設置相應的accessoryType的細胞。在你的配置把這將在重新加載tableview時,獲取tableview來正確檢查項目。

+0

嗨,大衛感謝您的回覆。我將如何爲數組中的每個對象分配一個布爾值?有沒有辦法寫出來的文件?我不需要它保持在應用程序啓動之間,就在視圖開關之間。乾杯 – Luke 2011-04-15 00:38:13

+0

你在陣列中存儲什麼類型的對象?如果他們是一個自定義類的實例,那麼你可以簡單地將一個布爾屬性添加到該類將存儲該值。該值不會在應用程序啓動之間持續存在,但只要對象處於活動狀態,該值就會保持有效。如果你沒有使用你自己的一個類,那麼簡單的解決方案就是一個包裝類,它將包含你存儲在數組中的對象(例如一個NSString)以及布爾屬性。 – 2011-04-15 00:43:17

0

當您點擊第3個按鈕或創建新的tableView時,是否重新加載tableview。

如果您正在重新加載,請使用temp變量來存儲帶勾號的單元格的數據。在每次重新加載時,將temp數據與單元格的數據進行比較。如果它匹配地方複選標記。

0

當您將數據添加到數組時,您可以添加一個字典對象,並帶有一個額外的對象@「FALSE」,@「checkState」。最初它對所有對象都是FALSE,所以當你在第三個選項卡中爲表格創建單元格時,檢查數組中的該鍵。當你選擇一個單元格時,訪問該數組中indexPath.row的字典對象,並將其值更新爲TRUE以獲得關鍵字@「checkState」。