我已经以编程方式创建了一个UILabel,并希望它在TableView中显示单元格的数量。
我的viewDidLoad()
中有以下代码
let lb = UILabel()
lb.textAlignment = .center
lb.numberOfLines = 0
lb.text = "Num of Cells: \(structure.count)"
lb.font = UIFont.boldSystemFont(ofSize: 18.0)
newView.addSubview(lb)
并希望为其分配以下structure.count
值。
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return structure.count
}
只需在viewDidLoad()
中执行以下操作,就会在加载表视图单元之前加载0
:
lb.text = "Num of Cells: \(structure.count)"
一旦单元格全部加载到表格视图中,如何将structure.count值分配给标签?
结构是这样填充的:
URLSession.shared.dataTask(with: request) { data, _, error in
guard let data = data else { return }
do {
self.structure = try JSONDecoder().decode([StructOne].self,from:data)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
catch {
print(error)
}
}.resume()
}
答案 0 :(得分:0)
由于异步加载数据,因此无法更新viewDidLoad
中的标签。填充structure
后,您需要更新标签。
只需移动:
lb.text = "Num of Cells: \(structure.count)"
与重新加载表格视图的调用一起位于DispatchQueue.main.async
块中。