我有一个我在 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)
}
}