2013-11-03 93 views
0

我有一個問題,我有一個coredata對象,用於填充UITableView。每個UITableViewCell都有一些按鈕,我用它們作爲複選框,當用戶按下其中一個文本框時,我想更新coredata並重新加載UITableView,這樣我所有的數組都會更新以反映新數據。當設備進入睡眠狀態時寫入coredata?

考慮到這一點,我得出了一個結論,即它每次按下按鈕時都會重複加載UITableView,因爲其中一些UITableView將包含數百行,每行包含兩個可編輯的UIButton。

所以我想,也許我應該更新當前的陣列,而不是那麼當視圖要麼退出或設備處於睡眠狀態,我可以更新coredata對象呢?唯一的事情是我不知道這是否是正確的做法或可能。

的原因,這是這樣一個問題是,當我改變比如從蜱一個按鈕,交叉,如果我離開滾動,然後再回來的按鈕勾選或交叉小號回覆到其原來的值。

我想知道處理,因爲我從來沒有做過這樣的事這種情況下,最好的方式。

回答

0

您應該使用NSFetchedResultsController及其委託的方法來填充的UITableView。然後當用戶點擊一個按鈕時,只需更新相應的核心數據實體而不是單元格。然後NSFetchedResultsController將調用它的委託方法,並且可以只更新用戶進行更改的那個單元。 另外,在cellForRowAtIndexPath中,您可以簡單地調用相應的CoreData實體,並使用其屬性/屬性來調整單元格的顯示。 記住,你必須總是用一些數據(通常的NSArray),從該讀什麼在indexPath的細胞做時的tableView調用的cellForRowAtIndexPath :. 這樣,當fetchedResutsController調用其委託的方法,你可以簡單地調用reloadCellAtIndexPath上的tableView然後會的tableView再次調用的cellForRowAtIndexPath。隨着核心數據實體更新,您調整該單元格顯示的邏輯將導致單元看起來應該如此。重要的是,您只需調整單元格在cellForRowAtIndexPath中的顯示方式,並將外觀放在CoreData實體上。改變多個地方的單元格的外觀,你會遇到問題。

相關問題