![](/img/trans.png)
[英]UITableView with: Static Cells with dynamic content and dynamic cells
[英]Swift rendering static cells with dynamic content
我有一个带有n列和1部分的静态 UITableView
。 单元格中详细介绍了从另一个UIViewController
传递的一些动态内容。
我的解决方案如下:我在viewDidAppear
进行调用以呈现动态内容并最终重新加载视图:
override func viewDidAppear(_ animated: Bool) {
setupDetails()
}
fileprivate func setupDetails() {
tableView.cellForRow(at: [0,0] as IndexPath)?.detailTextLabel?.text = "..."
tableView.cellForRow(at: [0,1] as IndexPath)?.detailTextLabel?.text = "..."
// .... multiple cells
tableView.reloadData()
}
我不喜欢的是在向用户显示视图后更新内容(这要感谢viewDidAppear
调用)。
对于在cellForRow()
方法上需要处理的问题,鉴于该单元是在我的情节提要中静态创建的,因此我无法使其正常工作。
我的问题是在这种特殊情况下是否存在一种我没有想到的模式。 我基本上希望在呈现视图之前先加载视图,就像我在处理动态单元格一样。
我的问题是在这种特定情况下是否存在要使用的模式
是。 不要使用静态表。 您的桌子不是静态的! “静态”是指“永不变”。 您的表与static相反; 它确实改变了。 它是动态的!
因此,请使用普通的动态表。 维护三个主要问题(数据源方法)所参考的数据模型。 要使用新数据更新表,请首先更新数据模型,然后调用reloadData
。 这将导致为您调用 cellForRowAt
,然后您将填充数据模型中的每个单元格。 这比您正在执行的效率要高得多。
至于闪光灯,那只是时间问题。 使用viewWillAppear
而不是viewDidAppear
。
如果您不希望更改以显示给用户,则不要使用ViewDidAppear。 使用ViewWillAppear,当用户第一次看到该视图时,该视图将已经处于其最终状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.