1
我有一個UITableView,我在程序執行過程中動態添加新行。我總是在底部添加新行,當發生這種情況時,我希望表視圖滾動到底部並顯示新行。每次使用動畫時,UITableView都不會滾動到底部
NSInteger oldCount = [self.game count];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
//This may take a long time
BOOL gameStateChanged = [self.game update] ;
dispatch_async(dispatch_get_main_queue(), ^{
if (gameStateChanged)
{
NSMutableArray* ipaths = [NSMutableArray arrayWithCapacity:5];
NSInteger newCount = [self.game count];
for (NSInteger i = oldCount; i < newCount; i++)
{
[ipaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
NSIndexPath* ipath = [ipaths lastObject];
[self.wordsTableView insertRowsAtIndexPaths:ipaths
withRowAnimation:UITableViewRowAnimationNone];
[self.wordsTableView scrollToRowAtIndexPath: ipath
atScrollPosition:UITableViewScrollPositionBottom
animated:YES];
}
});
});
問題是它有時會停止滾動。在它停止滾動之後,它不會在隨後調用相同方法時自動開始滾動,除非用戶手動滾動表視圖。
如果我關閉了滾動的動畫,發送animated:NO
,它完美的作品。怎麼會這樣?我怎樣才能使用動畫工作?
通過等待,你的意思是不同時啓動兩個動畫?我嘗試閱讀這種做動畫的方式,它說從iOS 4.0開始它就不鼓勵了。我不想創建自己的動畫,因爲它內置在UITableView中。 – symmetricsaurus