当我从DispatchQueue.main.async{}
调用viewDidLoad()
分配表视图委托和数据源时,表视图将在加载任何数据之前出现,几秒钟后数据将出现。如果我将委托和数据源分配给闭包之外,则会有一些滞后,但是会出现tableview并加载所有数据。由于UIKit不是线程安全的,因此我必须在闭包中分配tableview的属性。有没有办法在表格视图出现之前加载我的数据,还是在填充单元格的时候只使用活动指示器1/2秒?
override func viewDidLoad() {
super.viewDidLoad()
if let normalDays = Bundle.main.loadNibNamed("NormalClasses", owner: self, options: nil)?.first as? NormalClassesView, let specialDays = Bundle.main.loadNibNamed("SpecialClasses", owner: self, options: nil)?.first as? SpecialClassesView {
//I removed some code here for sizing the views since it didn't pertain to the question
DispatchQueue.main.async {
self.tableViews.forEach{
if let tableView = $0 {
let nib = UINib(nibName: "BasicClassInfoCell", bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "periodCell")
tableView.tableFooterView = UIView()
tableView.separatorStyle = .none
tableView.isUserInteractionEnabled = false
tableView.delegate = self
tableView.dataSource = self
}
}
}
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "periodCell", for: indexPath) as? BasicClassTableViewCell {
cell.backgroundColorView.backgroundColor = UIColor.blue
return cell
}
return UITableViewCell()
}
答案 0 :(得分:0)
仅隐藏tableView直到加载完成,然后将其设置为false