2010-11-22 104 views
1

我有一個非常奇怪的問題與UITableView/UITableViewCells。UITableViewCell沒有刷新顯示?

我有一個簡單的樣式的UITableView,它顯示了一個對象列表(對於參數,讓我們說MenuItemsViewController),它有一個名爲ItemViewController的子對象。當用戶在MenuItemsViewController中選擇一個對象時,MenuItemsViewController只改變ItemViewController的menuItem屬性。

當用戶選擇他們的第一個項目時,一切都顯示正常。但是,在隨後選擇其他項目時,ItemViewController的第一部分中的數據不會更改 - 即它仍會顯示第一個項目的屬性。我在tableView:cellForRowAtIndexPath:tableView:willDisplayRowAtIndexPath:方法的末尾設置了斷點,並且在顯示單元格時查詢它們顯示textLabel/detailTextLabel屬性都是正確的 - 即在內部它們恰好具有它們應該設置的狀態。但是,UITableView仍然沒有顯示正確的信息。

任何幫助表示讚賞 - 這個問題令我瘋狂。我現在正在錄製並上傳視頻給YouTube,因爲這是一個奇怪的問題,我認爲人們可能會誤解我的要求。

編輯:視頻 - http://www.youtube.com/watch?v=AwHTaHCQtX8&feature=youtube_gdata_player

編輯#2:所以,這是瘋狂的:直調試和測試的6小時後,事實證明,通過調用一個NSManagedObject一個getter是動畫問題引起故障...我有沒有想法爲什麼。沒有。我想現在這是一個核心數據問題,所以我將它添加爲標籤。

回答

0

您必須告訴表視圖,其內容已更改。可能的解決方案是將[self.tableView reloadData]添加到ItemViewController的viewWillAppear:方法中。

但我強烈建議您重寫menuItem屬性並添加代碼,以分別使用reloadRowsAtIndexPaths:withRowAnimation:/reloadRowsAtIndexPaths:withRowAnimation:分別超載更改的單元格/部分。

+0

我的代碼正確地生成單元格,正如問題所述 - 再次調用reloadData不會幫助 – refulgentis 2010-11-22 13:06:12

+0

您能否顯示更新並加載ItemViewController實例的MenuItemsViewController方法的代碼? – Kentzo 2010-11-22 13:56:40

0

當你在第一個表格視圖中選擇一個項目時,它應該創建一個新的子視圖控制器並將NSManagedObject傳遞給子項以供填充。當你從客戶端回到父母時,孩子應該得到解除分配。我懷疑你試圖重新使用子視圖控制器(根據你的視頻),否則你不會遇到這個問題。

因此,讓我們從那裏開始。你能確認這實際上是你在做什麼嗎?如果不是,爲什麼不呢?