这里有一个奇怪的问题。我想将我的表视图滚动到第1部分第0行的底部。我正在使用此代码:
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true)
它似乎在iOS 9.0及更高版本的模拟器中完美运行。但是在我的设备(iOS 8.1)和8.3的模拟器上,它完全相反。它滚动到单元格的顶部而不是底部!似乎很奇怪。我在这里做错了什么想法?非常感谢任何指针!感谢
答案 0 :(得分:13)
根据this answer类似的问题,它似乎是iOS 8中的一个错误。一种解决方法是将滚动延迟很少量(此代码也可以在链接的答案中找到,但它是在Objective-C)。请注意,我没有测试此代码,因为我没有安装iOS 8模拟器。
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Bottom, animated: true)
}
编辑:这是Swift 3中的答案:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 1), at: .bottom, animated: true)
}
答案 1 :(得分:0)
试试这个:
if self.tempArray.count == 0 {
}
else{
let indexPath = NSIndexPath(forRow: tempArray.count - 1, inSection: 0)
self.tblChat.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)
}
答案 2 :(得分:0)
我有同样的问题,当我将UITableViewScrollPosition
选项从UITableViewRowAnimationBottom
设置为UITableViewRowAnimationNone
时,神奇的事情,对我来说很好,这里是代码
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.list.count - 1 inSection:0] atScrollPosition:UITableViewScrollPositionNone animated:YES];