У меня есть UITableView, используемый для отображения результатов поиска.Когда я печатаю, я звоню Tableview.reloadData()
.Визуально все работает.Когда я начинаю печатать, я показываю до 5 совпадений, и когда я опускаюсь ниже, в списке будет правильно отображаться меньше элементов.Вот как создаются ячейки и количество сообщаемых строк.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceCell
if shouldShowSearchResults {
let place = filteredPlaces[indexPath.row]
cell.dataSource = place
} else {
let place = allPlaces[indexPath.row]
cell.dataSource = place
}
cell.delegate = self
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if shouldShowSearchResults {
vlog?.debug("Number of FILTERED rows in PlacesTableView: \(filteredPlaces.count)")
return filteredPlaces.count
} else {
vlog?.debug("Number of unfiltered rows in PlacesTableView: \(allPlaces.count)")
return allPlaces.count
}
}
Поскольку PlaceCell - это пользовательский класс, вот некоторые его детали:
// I've omitted labels, etc.
class PlaceCell: UITableViewCell {
var dataSource : PlaceView? {
didSet {
if let ds = dataSource {
self.isAccessibilityElement = true
self.accessibilityLabel = ds.getAccessibilityLabel()
} else {
self.isAccessibilityElement = true
self.accessibilityLabel = nil
}
}
}
weak var delegate : PlaceCellDelegate? = nil
override func prepareForReuse() {
self.isAccessibilityElement = false
self.accessibilityLabel = nil
super.prepareForReuse()
}
}
Я начал замечатьпроблема, когда тесты пользовательского интерфейса с использованием Google Earl Grey начали давать сбой из-за нескольких ячеек с одинаковой меткой доступности.Визуально я не понял, почему это не сработало, так как была видна только одна видимая ячейка, которая соответствовала.
При проверке представлений с использованием Reveal, кажется, что, поскольку количество ячеек падает ниже того, что было максимумом5, старые ячейки все еще находятся в TableView, но скрыты.Таким образом, существует скрытая ячейка, в которой раньше отображались те же данные, что и в другой ячейке.
Есть идеи, почему это происходит?Это работало в течение нескольких месяцев, и я не уверен, что изменилось.