gpt4 book ai didi

ios - 以编程方式添加的 UITableView 中的错误单元格插入

转载 作者:行者123 更新时间:2023-11-28 11:53:42 25 4
gpt4 key购买 nike

我像这样以编程方式创建了一个 tableViewController :

import UIKit

class ViewController: UIViewController {

private var tableView: UITableView!
var elements = [1, 2, 3, 4, 5].map { "Elément \($0)" }


// MARK: - View controller life cycle
override func viewDidLoad() {
super.viewDidLoad()

tableView = UITableView(frame: .zero, style: .grouped)
tableView.dataSource = self
tableView.delegate = self
view.addSubview(tableView)

tableView.register(UITableViewCell.self, forCellReuseIdentifier: "BasicTableViewCell")

// Pin tableView to view
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0).isActive = true
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0).isActive = true
}
}


extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let element = elements[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "BasicTableViewCell")!
cell.textLabel?.text = element
cell.accessoryType = .disclosureIndicator
return cell
}
}

extension ViewController: UITableViewDelegate { }

这是 Storyboard,大部分是空的: storyboard_empty

这会在前导和尾部插入一个奇怪的单元格:

iPad landscape_wrong


真正奇怪的是:如果我在 Storyboard 中创建一个空的 tableView(而不是以编程方式将其添加到 View ),那么一切都很好!

这就是 Storyboard变成的样子,带有一个 iBOutlet 到 tableView。 storyboard_tableView

这是现在的类(class)(我没有包含扩展,它们没有变化)

class ViewController: UIViewController {

@IBOutlet weak var tableView: UITableView!
var elements = [1, 2, 3, 4, 5].map { "Elément \($0)" }


// MARK: - View controller life cycle
override func viewDidLoad() {
super.viewDidLoad()

tableView.dataSource = self
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "BasicTableViewCell")
}
}

结果: iPad_landscape_correct

我不敢相信如果没有这个错误,就无法完全以编程方式创建 tableView。我错过了 tableView 上的参数吗?

最佳答案

这是因为 cellLayoutMarginsFollowReadableWidth。只需将它添加到您的设置代码中即可。

tableView.cellLayoutMarginsFollowReadableWidth = false

关于ios - 以编程方式添加的 UITableView 中的错误单元格插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51482933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com