代码之家  ›  专栏  ›  技术社区  ›  MarcinR

Xcode模拟器10.5英寸表格行位置错误

  •  0
  • MarcinR  · 技术社区  · 6 年前

    告诉我那个虫子是不是?我在开发人员的生活中创建了许多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 回复  |  直到 6 年前
        1
  •  1
  •   milczi    6 年前