Симулятор XCode 10,5-дюймовый стол строки неправильное положение - PullRequest
0 голосов
/ 28 августа 2018

Скажите, это ошибка или нет? Я создал много 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? Вы можете это объяснить? Я ценю каждую идею, комментарий и объяснение!

1 Ответ

0 голосов
/ 28 августа 2018

На Xcode 9.4.1 работает нормально. Пожалуйста, обновите Xcode, если у вас более старая версия, и проверьте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...