gpt4 book ai didi

swift - 如何在更新容器 B 后重新加载容器 A?

转载 作者:行者123 更新时间:2023-11-28 07:18:45 24 4
gpt4 key购买 nike

我有一个包含 3 个 ContainerView 的分段控件的 ViewController。每个 Container 都是一个包含 tableView 的 ViewController。在 CV2 中,我可以选择一行。此行已从 CV2 中删除,应添加到 CV1 中。

在使用 Segmented Controller 之前,我使用了选项卡,每个选项卡上的表格 View 都已正确更新。现在,有了 ContainerView,我不知道如何调用重新加载。这是我对段的操作:

@IBAction func bSegment(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
UIView.animate(withDuration: 0.0, animations: {
self.listBOutlet.alpha = 1
self.addBOutlet.alpha = 0
self.delBOutlet.alpha = 0
})
} else {
if sender.selectedSegmentIndex == 1 {
UIView.animate(withDuration: 0.0, animations: {
self.listBOutlet.alpha = 0
self.addBOutlet.alpha = 1
self.delBOutlet.alpha = 0
})
} else {
if sender.selectedSegmentIndex == 2 {
UIView.animate(withDuration: 0.0, animations: {
self.listBOutlet.alpha = 0
self.addBOutlet.alpha = 0
self.delBOutlet.alpha = 1
})
}
}
}
}

我尝试了很多这样的事情来访问 CV2 中的 viewWillAppear:

            print(self.children)
var myClass : ListeBEtb = self.????
myClass.ListeB.reloadData()
myClass.viewWillAppear(false)

但我不知道如何调用ListeBEtb (CV1) 来更新它。

在我的 CV2 中:

override func viewWillAppear(_ animated: Bool) {

let recupListeBAddModel = RecupListeBAddModel()

recupListeBAddModel.delegate = self

recupListeBAddModel.downloadItems(id: idEtablissement)
self.ListeB.reloadData()
}

你知道吗?

谢谢

最佳答案

您有多种方法可以完成这项工作,最简单的方法是使用通知中心作为开始。

委托(delegate)模式是另一种,RxSwift也是另一种选择,等等。

为了使用通知中心,首先,定义一个扩展以便于通知处理:

extension Notification.Name {
static let rowDeleted = Notification.Name("rowDeleted")
}

之后,订阅 CV1 中新创建的通知:

NotificationCenter.default.addObserver(self, selector: #selector(rowDeleted), name: .rowDeleted, object: nil)

请注意,您需要在 CV1 中调用一个名为 rowDeleted 的方法,或者您希望如何调用它。

此外,请确保在 CV1 的 deinit 中将自己从观察者中移除:

deinit { 
NotificationCenter.default.removeObserver(self)
}

然后,当您在 CV2 中进行更新时,使用如下内容:

NotificationCenter.default.post(name: .rowDeleted, object: nil)

这一切都假设您不需要传递实际对象,而只需要一个事件通知。对象传递有点不同,使用委托(delegate)模式可以更好地完成,但这是一个不错的开始。

关于swift - 如何在更新容器 B 后重新加载容器 A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58802760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com