gpt4 book ai didi

ios - 以编程方式将数据源分配给 UITableView 而不调用数据源方法

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

我有 tableview 有两个部分,每个部分各一行。我想在单击按钮时填充 tableview 数据。在viewDidLoad中,我隐藏了tableView。单击按钮时,我将 datasourcedelegate 分配给 tableview 并取消隐藏 tableview 但其 datasource 方法未被调用。

下面是代码:

@IBAction func btnShowAction(_ sender: Any) {

tableView.delegate = self
tableView.dataSource = self
tableView.isHidden = false
}

func numberOfSections(in tableView: UITableView) -> Int {

return 2
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return 1
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

return ((tableView.frame.size.height / 2) - 20)
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

if(section == 0) {

return "Section 1"
}
else {

return "Section 2"
}
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

return 20
}

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

let tableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
tableViewCell.lblText.text = "abc"
return tableViewCell
}

最佳答案

当 View 加载时,例如viewDidLoad(),此时数据源方法将在内部调用reloadData(),但在您单击按钮的情况下,我们需要调用reloadData() 显式更新 TableView ,因为 View 已加载。您的代码应该如下所示,

@IBAction func btnShowAction(_ sender: Any) {

tableView.delegate = self
tableView.dataSource = self
tableView.reloadData()
tableView.isHidden = false
}

这将重新加载 TableView 的行和部分。希望对您有所帮助。

关于ios - 以编程方式将数据源分配给 UITableView 而不调用数据源方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743866/

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