【问题标题】:correct way to append data into UITableView, swift将数据附加到 UITableView 的正确方法,快速
【发布时间】:2014-10-20 05:48:30
【问题描述】:

我正在尝试使用两种方式将新数据添加到 UITableView

  1. 第一种方式

    func insertData(appendMessages:[Message]) {
        var currentCount = self.messeges.count;
        var indxesPath:[NSIndexPath] = [NSIndexPath]()
        for msg in appendMessages {
            indxesPath.append(NSIndexPath(forRow:currentCount,inSection:0));
    
            self.messeges.append(msg)
            currentCount++
        }
    
        self.tableView.beginUpdates()
        self.tableView.insertRowsAtIndexPaths(indxesPath, withRowAnimation: UITableViewRowAnimation.Bottom)
        self.tableView.endUpdates()
    }
    
  2. 第二种方式

    func insertData(appendMessages:[Message]) {
        for msg in appendMessages {
            self.messeges.append(msg)
        }
        self.tableView.reloadData()
    }
    

你看我有分开的结果。

当使用“reloadData”时一切正常,但我想这不好,因为我正在更新所有内容而不是新内容?

当使用“insertRowsAtIndexPaths”时,我有重复的分隔符,并且只有在我点击它时才会绘制该行

这很奇怪,我做错了什么......

谢谢

谢伊

【问题讨论】:

  • 我对Swift一无所知,但是传统的Objective-C API基本禁止直接编辑列表。正确的方法是向表格视图的数据源(委托)添加新元素。
  • jsumners,看起来这不是问题所在——如果 self.messeges 是数据源使用的模型对象,调用 -insertRowsAtIndexPaths:withRowAnimation: 应该没问题。当插入与数据源的最终状态不一致时,通常会出现问题,这些问题通常会导致崩溃。
  • @NoahWitherspoon 谢谢,是的 self.messeges 是正在使用的模型。 “插入与数据源的最终状态不一致”对您来说是什么意思,我该如何解决?

标签: ios uitableview swift


【解决方案1】:

错误是你应该将计数器初始化为 0 然后增加它:

func insertData(appendMessages:[Message]) {
    var currentCount = 0
    var indexesPath = [NSIndexPath]()
    for _ in appendMessages {
        let index = let index = NSIndexPath(forRow: i, inSection: 0)            
        indexesPath.append(index)
        currentCount++
    }

    self.tableView.beginUpdates()
    self.tableView.insertRowsAtIndexPaths(indexesPath, withRowAnimation: UITableViewRowAnimation.Bottom)
    self.tableView.endUpdates()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2019-01-04
    • 2019-11-20
    • 1970-01-01
    • 2016-02-04
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多