gpt4 book ai didi

ios - 以编程方式创建的 UITableView 不显示任何内容

转载 作者:行者123 更新时间:2023-11-30 11:46:43 25 4
gpt4 key购买 nike

我尝试生成带有表格 View 的叠加层,然后将搜索栏添加到列表中但目前我正在努力创建 TableView ,因为它需要以编程方式完成。

叠加层也可以正确显示,但没有显示任何条目。如果我打印出 UITableViewAutomaticDimension 它总是返回 -1,但在 Debug模式下我可以看到在 cellForRowAt 中定义了单元格并且高度为 46

如果我自己返回这个高度,问题也没有解决

代码:

public class PersonOverlay : UITableView, UITableViewDelegate, UITableViewDataSource {

var overlayView = UIView()
var tableView = UITableView()

let myArray = ["1","2","3","4"]



public func showPersons(view: UIView) -> UITableView {

//create new opaque view to lay over the Main view
self.overlayView = UIView(frame: UIScreen.main.bounds)
self.overlayView.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.8)

//create a tableview to display possible inputs
self.tableView.frame = CGRect(x:0,y:0, width:UIScreen.main.bounds.width, height:UIScreen.main.bounds.height/2)
self.tableView.frame = UIScreen.main.bounds
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "PersonCell")
self.tableView.delegate = self
self.tableView.dataSource = self

//add to overlay and afterwards to the view
self.overlayView.addSubview(self.tableView)
view.addSubview(self.overlayView)

DispatchQueue.main.async {
self.tableView.reloadData()
}

return tableView

}

public func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//returns -1 ?
print(UITableViewAutomaticDimension)
return UITableViewAutomaticDimension
}

public func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//view clicked
print("clicked at index \(indexPath.row)")
}

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("tableview numberofrowsinsection \(myArray.count)")
return myArray.count
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = self.tableView.dequeueReusableCell(withIdentifier: "PersonCell") as! UITableViewCell

print(String(describing: myArray[indexPath.row] ))
cell.textLabel?.text = myArray[indexPath.row]

return cell
}

}

它从另一个 ViewController 调用,显示一些其他信息

我希望任何人都可以帮助并感谢您的时间:)

最佳答案

在您调用该类的 ViewController 的 viewDidLoad() 中尝试:

let pOverlayTableView = PersonsOverlay()
self.tableView.registerClass(pOverlayTableView, forCellReuseIdentifier: "PersonCell")

关于ios - 以编程方式创建的 UITableView 不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48747475/

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