首页 > 解决方案 > 有没有办法在使用 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 函数/方法可以在完成后调用以重新加载视图控制器?

标签: iosswiftviewcontroller

解决方案


您永远不应该直接调用 viewDidLoad 或 viewWillAppear。系统调用这些方法(并且 viewDidLoad 在视图控制器的生命周期内只被调用一次。)

您应该将代码分解为具有displayContents()方法(或类似方法)。当您需要显示内容时调用该方法,无论是最初还是内容发生变化时。


推荐阅读