Я использую Xcode 11.2, и у меня есть представление, содержащее 3 просмотра таблицы. Все они имеют выходы для кода, а их делегаты и источники данных правильно установлены в методе viewDidLoad.
В результате происходит выделение ячейки при нажатии, но затем она не остается выбранной (didSelectRow никогда не вызывается).
Если быстро щелкнуть левой и правой кнопками мыши много раз, ячейка будет выделена, и будет вызван didSelectRow.
Также я заметил, что выделение почти всегда работает, если я нажимаюячейка и в то же время немного прокрутите таблицу.
Вот некоторые из кода:
@IBOutlet weak var linesTableView: UITableView!
@IBOutlet weak var firstLvlTableView: UITableView!
@IBOutlet weak var secondLvlTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.linesTableView.dataSource = self
self.linesTableView.delegate = self
self.firstLvlTableView.delegate = self
self.firstLvlTableView.dataSource = self
self.secondLvlTableView.dataSource = self
self.secondLvlTableView.delegate = self
if (CLLocationManager.locationServicesEnabled()) {
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
self.secondLvlTableView.isHidden = true
self.firstLvlTableView.isHidden = false
self.linesTableView.isHidden = true
fetchData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == linesTableView {
return 0
} else if tableView == firstLvlTableView {
return self.salesAssistantLocalized.count //viewModel.typesOfSale.lists.endIndex
} else if tableView == secondLvlTableView {
return 4 //viewModel.standardTableLevels.lists.endIndex
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == firstLvlTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "FirstLvlCell", for: indexPath)
cell.textLabel?.text = self.salesAssistantLocalized[indexPath.row]
return cell
} else if tableView == secondLvlTableView {
let cell = tableView.dequeueReusableCell(withIdentifier: "SecondLvlCell", for: indexPath)
cell.textLabel?.text = self.levels[indexPath.row]
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "SaleTypeCell", for: indexPath)
return cell
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
printDebug("Did Select Row \(indexPath.row) for table \(tableView)")
if tableView == firstLvlTableView {
if indexPath.row == 0 {
self.secondLvlTableView.isHidden = false
}
}
}