首页 > 解决方案 > Xcode模拟器10.5寸表格行位置错误

问题描述

告诉我是不是那个bug?我在开发人员的生活中创建了许多 UITableView,但以前从未见过。

我有自定义UITableViewCell并在 Storyboard 中创建UILabelUIButton

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 px 偏移设置为按钮大小时,一切都像魅力一样!当我将按钮拉伸到 contentView 大小时,为什么会有这么大的问题?你能解释一下吗?我感谢每一个想法、评论和解释!

标签: iosswiftuitableview

解决方案


在 Xcode 9.4.1 上工作正常。如果您有旧版本,请更新 Xcode 并再次检查。


推荐阅读