在iOS 14中,带有textField的TableView无法正常工作。有人有解决方案吗?
这是示例代码:
class TestController: UIViewController { let tableView: UITableView = { let tableView = UITableView(frame: .zero, style: .grouped) return tableView }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .green view.addSubview(tableView) tableView.edgesToSuperview() tableView.backgroundColor = .gray tableView.register(TestCell.self, forCellReuseIdentifier: TestCell.reuseID) tableView.dataSource = self } } extension TestController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 2 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: TestCell.reuseID, for: indexPath) return cell } } class TestCell: UITableViewCell { let textField = UITextField() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) backgroundColor = .red addSubview(textField) textField.height(50) textField.backgroundColor = .blue textField.edgesToSuperview() selectionStyle = .none } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }
相同的代码在iOS 13上有效,但在iOS 14上无效。有人解决了此问题吗?(Xcode版本12.0(12A7209))
原因
您不应在单元格中直接使用addSubview,而应将其添加到ContentView中:
contentView.addSubview(textField)