0

我有一个我在 UITableView 中显示的名称列表。我正在使用 NSDiffableDataSourceSnapshot。如果添加了新名称并且我应用了快照,那么也会为现有名称调用 cellForRowAtIndexPath。为什么它不只为新名称调用 cellForRowAtIndexPath 。如何解决这个问题。下面是代码。

   typealias ActivityFeedSnapshot = NSDiffableDataSourceSnapshot<Int, String>

var names = ["Aashish"]

override func viewDidLoad() {
    super.viewDidLoad()

    tableView = UITableView()
    self.view.addSubview(tableView)
    tableView.translatesAutoresizingMaskIntoConstraints = false

    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "person")

    NSLayoutConstraint.activate([
        tableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
        tableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
        tableView.topAnchor.constraint(equalTo: self.view.topAnchor),
        tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
    ])


    var snapshot = ActivityFeedSnapshot()
    snapshot.appendSections([0])
    snapshot.appendItems(names, toSection:  0)
    dataSource.apply(snapshot, animatingDifferences: false)

    DispatchQueue.main.asyncAfter(deadline: .now() + 10) {
        self.names.append("Rahul")
        var snapshot = ActivityFeedSnapshot()
        snapshot.appendSections([0])
        snapshot.appendItems(self.names)
        self.dataSource.apply(snapshot, animatingDifferences: false)
    }
}
4

0 回答 0