重新加载表时滚动冻结

时间:2015-07-23 08:52:07

标签: ios uitableview cocoa-touch

在我的视图控制器上,我有一个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设置为一秒 有没有办法让动画和刷新不停止滚动?

0 个答案:

没有答案