2008-11-21 146 views
16

我想完全重置UITableView的滾動位置,這樣每次打開它時,它都會顯示最上面的項目。換句話說,我想在每次打開時將表格視圖滾動到頂部。如何重置UITableView的滾動位置?

我試着用下面的代碼,但它看起來像我誤解的文件:

- (void)viewWillAppear:(BOOL)animated { 
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO]; 
} 

這是這裏的錯誤的做法?

回答

33

8月份獲得了UITableView特定的方法。另一種方法是:

[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 

此方法在UIScrollView中定義,它是UITableView的父類。上面的例子告訴它在0,0 - 左上角滾動到1x1框,換句話說。

+1

這實際上是一種非常簡潔的方法,因爲您不必擔心表格是否爲空。當沒有要顯示的記錄時,我有一個討厭的崩潰去NSIndexPath(0,0)。 – 2008-11-21 10:53:51

6

您正在使用的方法滾動到(如方法名稱暗示的)最近的所選行。在很多情況下,這不會是第一行。相反,你要爲使用

scrollToRowAtIndexPath:atScrollPosition:animated: 

selectRowAtIndexPath:animated:scrollPosition: 

,你用你想要滾動到該行的索引路徑。第二種方法實際上選擇一行,第一種方法簡單地滾動到它。

+0

在動畫序列開始的過程中,這些功能對我來說並不適用於iOS 4.0。我不得不使用scrollRectToVisible:animated: – chrish 2010-09-29 23:45:26