屏幕出现时,加载数据需要几秒钟



我创建了一个产品详细信息屏幕,加载后,数据需要几秒钟才能显示。我正在寻找一个更优雅的解决方案。

有主故事板屏幕

在加载数据之前,我可以看到这个视图几秒钟:

第一视图屏幕

加载的数据如下所示:

查看数据加载时间

有代码可以在上一个屏幕上推送数据:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
productInt = indexPath.row
let product = msproducts[productInt]
nameToSend = product.name ?? ""
descToSend = product.short_description ?? ""
self.performSegue(withIdentifier: "infoViewAlu", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "infoViewAlu" {
let controller = segue.destination as! ProduktInfoViewController
ProgressHUD.show("Proszę czekać")
controller.productName = nameToSend
controller.productDesc = descToSend

}
}

以下是在表中显示此数据的代码:

@IBOutlet weak var infoProductName: UILabel!
@IBOutlet weak var productDescription: UITextView!
var productName: String = ""
var productDesc: String = ""
override func viewDidLoad() {
super.viewDidLoad()
changeData(name: productName, desc: productDesc)
title = productName 
}
func changeData(name: String, desc: String){
infoProductName.text = name
productDescription.text = desc
ProgressHUD.dismiss()
}

谁能告诉我问题在哪里,为什么屏幕在两个步骤上加载?

问题可能是你在progressHUD.show之前打电话给。尝试:

@IBOutlet weak var infoProductName: UILabel!
@IBOutlet weak var productDescription: UITextView!
var productName: String = ""
var productDesc: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// remove this from **prepare for segue**
ProgressHUD.show("Proszę czekać")
//
changeData(name: productName, desc: productDesc)
title = productName 
}
func changeData(name: String, desc: String){
infoProductName.text = name
productDescription.text = desc
ProgressHUD.dismiss()
}

请从详细信息屏幕中删除所有UI元素,然后再次使用新元素重新设计(不要复制过去的旧元素(。

由于特定UI的iOS框架上的内存泄漏,我多次遇到此类问题。

如果您不想从详细信息屏幕中删除所有元素,请逐个删除元素并检查它。(你必须找到特定的UI元素(。

最新更新