ios - 有没有办法在使用 Swift 5 完成功能后重新加载视图控制器?
问题描述
我在视图控制器(使用情节提要)中使用以下语法来删除数据库中数组的第二个元素。
@IBAction func deleteItemOne(_ sender: UIButton) {
if userId == user?.uid {
let group_array = document["product"] as? [String] ?? [""]
if (group_array.count) > 1 {
document.reference.updateData([
"product": FieldValue.arrayRemove([group_array[1]])
])
self.viewDidLoad()
self.viewWillAppear(true)
}
}
}
删除数组元素后,我将使用以下语法重新加载视图控制器
self.viewDidLoad()
self.viewWillAppear(true)
然而,在移除元素后,视图控制器不会按预期重新加载,事实上它最终不会做任何事情。
这引出了我的问题,是否有一个简单的 Swift 函数/方法可以在完成后调用以重新加载视图控制器?
解决方案
您永远不应该直接调用 viewDidLoad 或 viewWillAppear。系统调用这些方法(并且 viewDidLoad 在视图控制器的生命周期内只被调用一次。)
您应该将代码分解为具有displayContents()
方法(或类似方法)。当您需要显示内容时调用该方法,无论是最初还是内容发生变化时。
推荐阅读
- c# - C# Linq 如何通过流读取 xml 并过滤特定元素
- architecture - DDD:直接聚合处理域事件?
- python-3.x - Discord.py modmail系统
- php - 如何从时间戳中仅提取 php laravel 查询中的日期?
- sql - Salesforce SQL 查询活动设置错误
- javascript - 在循环后尝试使用用户在 JOptionPane 中输入的数据
- hugo - Hugo-ish 引用静态文件(资源)的方式_indirectly_所以文件名可以在一个地方更改并且所有内容链接都会更改
- javascript - Javascript 问题:常量未运行。不断发送电子邮件
- python - 找到矩阵中的最小列数,以确保所有行都是唯一的
- javascript - 上传前反应 .docx 到 .pdf 的转换