2016-07-07 54 views
1

我有一個應用程序,我想scrolltoindexpath到一個特定的部分。我這樣做Scrolltorectatindexpath將無法滾動到特定部分?

[table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:anIndex] atScrollPosition:UITableViewScrollPositionTop animated:NO]; 

[table reloadData]; 

所有工作正常。但這裏的問題是tableview始終保持在底部。

之後它不會向上滾動,它將始終保持最後一個單元格到底。不會在此後滾動。我將約束條件設置爲(0,0,0,0)。

我想我在這裏錯過了一些東西。任何人都可以在此引導我?

+0

'scrollToRowAtIndexPath'的工作,你需要等到tableview子視圖佈局。表格被添加到視圖後,請嘗試在延遲1秒後調用此方法,並檢查此方法是否可用 – 7vikram7

+0

是否可以粘貼一些代碼片段..? –

回答

1

這裏主要有2個問題。

1)

[table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:anIndex] atScrollPosition:UITableViewScrollPositionTop animated:NO]; 

隨着動畫false,你必須強制調用dispatch_get_main_queue()即使它在主線程上運行。這應該是一個iOS錯誤。

2)當您嘗試滾動tableView時,它會調用cellForRowAtIndexPath獲取可用單元格。然而,緊接着的下一行是調用reloadData,它試圖調用相同的dataSource方法。所以它可能與其他人相沖突。所以我會建議添加一個小的延遲[table reloadData];

+0

我的pbm是堅持底部的,不會上漲,最後一個單元總是處於底部。 – hacker

+0

您是否嘗試刪除reloadData?如果在reloadData不存在的情況下進入頂端,則必須按照上述過程進行操作。如果不是,這個問題可能是別的。你能證實這一點嗎? – Varun