如何将表格视图单元格计数值分配给程序化UILabel?

时间:2019-06-10 00:12:11

标签: ios swift uitableview

我已经以编程方式创建了一个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()

}

1 个答案:

答案 0 :(得分:0)

由于异步加载数据,因此无法更新viewDidLoad中的标签。填充structure后,您需要更新标签。

只需移动:

lb.text = "Num of Cells: \(structure.count)"

与重新加载表格视图的调用一起位于DispatchQueue.main.async块中。