我已經被這個難住了一段時間...彈出詳細視圖後自動取消表格視圖單元格?
當您點擊在蘋果的iPhone手機應用程序中的聯繫人的細胞(進入接觸的細節視圖),然後點擊回到以前的觀點,有一個簡短的動畫(從藍色漸變爲白色)顯示取消選擇該單元格。這是Apple自己應用程序中所有表格視圖的行爲,也是根據其人機界面指南推薦的行爲。
但是,在我自己的項目中,我一直無法複製這種行爲。從細節視圖返回時,我的UITableView
中沒有任何單元格被選中。
我查看了Apple的文檔中的CoreDataBooks示例代碼,該代碼具有所需的單元格取消選擇行爲,並且似乎表視圖會自動獲取行爲(沒有任何特定的實現)。
我也試過在這些非常類似的問題落實解決:
What deselect selected cell when navigationController pops a view?
iPhone UITableView cells stay selected
UITableView doesn't keep row selected upon return
但我總是得到相同的結果 - 沒有一個細胞在我回到它時選擇了UITableView
。 (後即使在視圖控制器的-viewWillAppear:
方法加入[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:animated];
。)
也有人建議在一個問題具有[[self tableView] reloadData];
在-viewWillAppear:
可能會導致不保持選定細胞的評論。但CoreDataBooks做同樣的事情,仍然有沒有任何特定的代碼所需的行爲(看似)。
有關如何解決問題的任何建議?提前致謝。
在附註中,我不太明白爲什麼取消選擇單元的代碼應該在-viewWillAppear:
(而不是-viewDidAppear:
)中實現。在桌面視圖顯示在屏幕上之前,這不會導致所有事情發生嗎?這可能只是由於我對視圖的生命週期缺乏正確的理解,但任何澄清都會很好。再次感謝。
爲了防萬一,我使用Xcode 4.2和iPhone 5.0模擬器。我的項目使用ARC。 – James 2012-01-11 17:26:24
從viewWillAppear調用deselction方法時,您是否調試過indexpath的值?當時是什麼? – rishi 2012-01-11 17:40:53
不知道我是否正確做到了這一點,但我試着記錄'indexPathForSelectedRow'的返回值,並且段和行都是「(null)」。 – James 2012-01-11 18:00:06