2009-10-07 43 views
2

好的,這是一個益智遊戲。有one similar post,但它不夠數量,所以我發佈這一個。 :)分組的UITableView頁腳有時隱藏在快速滾動

我有一個分組UITableView與頁眉和頁腳。頁腳包括兩個UIButton的意見,並排。沒什麼大不了

現在... UIToolbar中有一個切換按鈕,位於該表格視圖中底部的更多/更少信息。所以我建立我的索引路徑刪除/插入淡出行動畫,所有常見的成分,夾在beginUpdatesendUpdates調用UITableView ...這工作正常!同樣發生的情況是,我的頁腳有時可能會從顯示屏的底部推出。

這是它變得奇怪的地方。如果我將手指向上拖動顯示屏,向上滾動視圖,最終應該看到該頁腳,對嗎?

呃......大部分時間我都這麼做。但是,如果我輕彈手指,爲了更快的滾動,頁腳缺失。即使你嘗試在那個區域挖掘 - 沒有任何反應。但是,如果我再次向下滾動,只是隱藏該頁腳(或隱藏頁腳通常會隱藏的區域),然後向上滾動,它就會再次出現!

這隻發生在插入行時。如果我刪除了行,那麼頁腳就會保持放置......除非它已經隱藏了,並且我沒有執行上述咒語來恢復它。 :)

我想通過這個追蹤,但無濟於事。我想通過滾動操作來追蹤是一個瘋狂的命題!也許有些創意採伐......建議,任何人?或者這是3.1中有關行插入/刪除的已知問題? (我不記得直到3.1纔看到它。)

回答

0

您是否嘗試在通過頁腳按鈕調用的方法中更改頁腳中的某些內容? changig腳本中的UILabel文本?這就是我想要做的。但:頁腳未更新。或者更確切地說:它已更新,但不在屏幕上。將頁腳滾動出可見陣列並返回顯示正確的頁腳。所以有一個更新問題。

因此,也許你看到相同的重繪問題?

我試圖調用所有的方法(needslayout needsDisplay等)沒有任何工作。 解決此問題的唯一方法是重新加載表格或節,但這會殺死我的rowAnimation。接下來,我嘗試通過通知調用重新加載,希望動畫在通知被調用之前完成。不。 最後,我使用計劃的計時器來重新裝入數據,並在插入/刪除行的開始處啓動100-200ms的延遲。所以動畫在加載之前完成。

它看起來像現在正在工作,但價格是一個短的「閃光燈」,它有一個錯誤的頁腳更新之前。

UPDATE

確定的支持Skie我解決我的問題重繪。請參閱this

我不知道,如果這種方法,或者至少這個想法可以解決你的太多,但也許....

+0

賓果。有一個更新問題,你只是發現一個更明確的方式來發現它!這必須與我所看到的有關。如果我煽動重新加載,你也是正確的 - rowAnimation kablooey。非常漂亮的解決方法,你也提出了,雖然我從來沒有想過我會看到以前只保留用於網頁的FOUC(無風格內容的Flash)的回報。 :) – 2010-04-26 23:25:47

+0

評論更新:有趣!我可以說這麼多。我在頁腳中使用了兩個按鈕,但在我的情況下,我看到了整個按鈕,而且兩個按鈕都可以正常工作。他們正在被分配正確的方式,等等......也沒有內存泄漏 - 在靜態分析,我們自己的現場檢查和查看儀器信息之間。此外,相同的按鈕 - 如果移動到標題 - 不會出現相同的問題。 Verrry雖然有趣。 – 2010-04-30 00:41:44

+0

正如我寫的,我最初的問題已經解決了,但現在我發現了同樣不時出現的頁腳。但是我發現它(僅限於現在)只發生在模擬器上,而不是iPhone 1.Gen或3GS 。但正如我們在德國所說的那樣,「Noch is not nicht aller Tage Abend ......」(意思是說它可能會有一天)。 – Gerd 2010-05-05 06:15:09

0

OK與我們的應用程序向前邁進,我偶然發現更多的時候在重繪問題。在調查了幾個小時之後,似乎只有一個解決方案[tableView reloadData]。但是對於破碎的動畫,有一個更好的解決方案(比我的第一個答案)。您可以儘快動畫完成此得到一個方法調用,並不再有一個「閃」:

[UIView beginAnimations:nil context:[NSNumber numberWithInt:section]]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; 
...do something on the table.. 
and commitAnimation 

在你animationDidStop做表重裝。

但是,爲重新加載找到正確的時刻/事件仍然很棘手,特別是如果您正在使用fetchedResultsController,只要屬性被更改並用於排序,就會自行觸發其委託方法。

所有這些仍然是圍繞單元格視圖更新問題進行編程的練習,它不應該是一個單元格視圖更新。

相關問題