我有一个包含多个 viewController 的应用程序。在第一个 VC 的 viewDidAppear()
上,我调用了一组函数,这些函数用从数据库中提取的信息填充一些数组,然后为 tableView 重新加载表数据。所有功能都运行良好,每次都能达到预期的效果。我关心的是 viewDidAppear()
被调用的频率。我不认为(除非我错了)每次 View 出现时自动调用刷新函数并重新加载所有数据是个好主意。我无法将其放入 viewDidLoad()
,因为 tableView 是选项卡栏的一部分,如果对任何其他选项卡中的数据进行了一些修改,则不会调用 viewDidLoad()当按 Tab 键返回时,此时它需要 重新加载(因为进行了修改)。我想使用一组变量来检查是否对来自任何其他 viewController 的数据进行了任何修改,然后有条件地告诉 VDA 运行与否。一般:
override func viewDidAppear(_ animated: Bool) {
if condition {
//run functions
} else{
//don't run functions
}
}
这个问题是可以从许多不同的 viewController 修改数据,这些 viewController 可能无法返回到 viewDidAppear()
感兴趣的 View Controller (因此使用 prepareForSegue
不一定有效)。 “检查”数据是否已被修改的最佳方法是什么。同样,我认为一组 bool 变量会很好,但我想避免使用太多全局变量。有什么想法吗?
最佳答案
通知中心
struct NotificationName {
static let MyNotificationName = "kMyNotificationName"
}
class First {
init() {
NotificationCenter.default.addObserver(self, selector: #selector(self.notificationReceived), name: NotificationName.MyNotificationName, object: nil)
}
func notificationReceived() {
// Refresh table view here
}
}
class Second {
func postNotification() {
NotificationCenter.default.post(name: NotificationName.MyNotificationName, object: nil)
}
}
一旦调用postNotification,类First中的notificationReceived函数就会被调用。
关于swift - 在不使用全局变量的情况下跨多个 View Controller 检查数据修改的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626083/