gpt4 book ai didi

ios - 仅 cellForRowAt indexPath 未调用所有其他数据源和委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 12:10:10 27 4
gpt4 key购买 nike

我正在尝试制作一个框架,并且我更喜欢代码中的所有内容,因此我找到了一种几乎可以完成所有操作的方法,但我面临的主要问题是我无法将数据放入表中,因为 cellForRowAtIndexpath 没有被调用。

我已经设置了delegatedataSource

我添加了 numberOfRowsInSection 并且它返回 10。

我添加了 heightForRowAtIndexPath 并且它返回 10。

我添加了 cellForForAtIndexPath 并返回一个单元格。

主要问题是,所有这些其他方法都会被调用,因为我在除 cellForForAtIndexPath 之外的所有方法中添加了打印语句。

问题是我什至无法尝试调试,因为该方法甚至没有被调用。

class PopControl: NSObject, UITableViewDataSource, UITableViewDelegate {
let tableView = UITableView()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("row selected")
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("cell for row at index path called")
let cell = UITableViewCell()
cell.textLabel?.text = "ABCD"
cell.detailTextLabel?.text = "EFGH"

return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("number of rows in section called")
return 10
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
print("Height for row at index path called")
return 10
}

func makeTable(){
let vc = UIApplication.shared.keyWindow?.rootViewController?.childViewControllers.last
vc?.view.backgroundColor = UIColor.black
print(vc)
tableView.dataSource = self
tableView.delegate = self
vc?.view.addSubview(tableView)
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: (vc?.view.topAnchor)!, constant: 100).isActive = true
tableView.bottomAnchor.constraint(equalTo: (vc?.view.bottomAnchor)!, constant: -20).isActive = true
tableView.leftAnchor.constraint(equalTo: (vc?.view.leftAnchor)!, constant: 20).isActive = true
tableView.rightAnchor.constraint(equalTo: (vc?.view.rightAnchor)!, constant: -20).isActive = true
print("dataSource for tableView is")
print(tableView.dataSource.debugDescription.description)
print("delegate is")
print(tableView.delegate.debugDescription.utf8CString)
}

我这样使用它是因为我想从不同的类调用 makeTable() 函数。我的意思是我无意将此类用作 UIViewControllerUITableViewController。我只是想用它从代码中的任何位置向 View Controller 呈现表格 View 。

一切正常,但未调用 cellForRowAtIndexPath 。我的意思是 tableView 被渲染但没有显示单元格。

最佳答案

问题可能不是重用单元,请尝试重用您的 UITableviewCell

makeTable中添加以下代码

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

cellForRowAt

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

// create a new cell if needed or reuse an old one
let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier:"Cell") as UITableViewCell!

// set the text from the data model
cell.textLabel?.text = "ABC"

return cell
}

关于ios - 仅 cellForRowAt indexPath 未调用所有其他数据源和委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46167877/

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