Скажите, это ошибка или нет? Я создал много UITableView в своей жизни разработчика и никогда не видел этого раньше.
У меня есть пользовательские UITableViewCell
с UILabel
и UIButton
, созданными в раскадровке.
class MyCell: UITableViewCell {
@IBOutlet weak var title: UILabel!
@IBOutlet weak var button: UIButton!
var row: Int? {
didSet {
guard let row = row else { return }
title.text = "row number: \(row)"
button.tag = row
}
}
@IBAction func onCellClick(_ sender: UIView) {
print(sender.tag)
}
}
И мой UITableViewController
:
class ViewController: UITableViewController {
}
extension ViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCell
cell.row = indexPath.row
return cell
}
}
Кнопка выровнена по размеру contentView
ячейки.
Если я запускаю этот код на любом устройстве и симуляторе, все работает без проблем. Проблема появляется, когда я запускаю этот код на 10,5-дюймовом симуляторе. Когда я нажимаю на кнопку ячейки print(sender.tag)
, распечатываю мне ДВА значения тега: первое правильное, на которое я нажал И второе последняя видимая ячейка на экране.
Я обнаружил, что когда я установил смещение в 1 пиксель к размеру кнопки, все работает как шарм! Почему такая большая проблема, когда я растягиваю кнопку до размера contentView? Вы можете это объяснить? Я ценю каждую идею, комментарий и объяснение!