繁体   English   中英

快速呈现具有动态内容的静态单元格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM