在我的视图控制器上,我有一个tableView,每5秒重新加载一次。它通过调用tableView.reloadData()来实现。
当用户滚动表格时,当表格中的行更新时,他会滑动表格,因此有关他滑动的信息会丢失。这意味着向下或向上滚动表格的过程会中断
如何在不丢失滚动数据的情况下刷新tableView?
代码:
override func viewDidLoad() {
super.viewDidLoad()
tableView.registerNib(UINib(nibName: "MasterTableCell", bundle: nil), forCellReuseIdentifier: "MasterTableCell")
startTimer()
}
func startTimer() {
updateView()
self.timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: self, selector: Selector("updateView"), userInfo: nil, repeats: false)
}
func updateView() {
elements = updater.readFromFile()
tableView.reloadData()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return elements.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let element = elements[indexPath.row]
var cell = tableView.dequeueReusableCellWithIdentifier("MasterTableCell", forIndexPath: indexPath) as! MasterTableCell
return updateCell(cell, element: element)
}
func updateCell(cell: MasterTableCell, element: Element) -> MasterTableCell {
cell.name?.text = element.name
if(element.change == "up") {
UIView.animateWithDuration(animationDuration, animations: {
cell.backgroundColor = self.backgroundColorUp
})
else {
UIView.animateWithDuration(animationDuration, animations: {
cell.backgroundColor = UIColor.clearColor()
})
}
return cell
}
修改
我将animationDuration更改为等于零并且滚动工作正常,但这是一种解决方法,不是可行的解决方案。现在我的动画是即时的,看起来不像我计划的那样好。之前的animationDuration设置为一秒 有没有办法让动画和刷新不停止滚动?