我在 main.swift 中有表格 View 如果
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
被调用(在appdelegate中)我的数据库获取新数据。
但是我的 View 没有改变,因为我没有调用tableview.reloadData
所以我的问题是如何在
之后调用tableview.reloadData
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
打电话了。 (我尝试了 Main().myreload (//自定义函数),但它显示 fatal error ..)
最佳答案
当数据库重新加载时,您会收到 application(_:open:options:)
调用,这似乎很奇怪。当外部应用程序告诉您的应用程序打开 URL 时,将调用该函数。
如果确实如此,您需要一种方法来从您的应用程序委托(delegate)向任何关心的人发送消息。我建议定义并使用 NotificationCenter
消息。让包含 TableView 的 View Controller 调用 addObserver(forName:object:queue:using:)
(或 addObserver(_:selector:name:object:)
,但是第一种风格更像 Swift。)
然后在您的 application(_:open:options:)
方法中,使用 `post(name:object:userInfo:) 或其变体之一,在 URL 打开方法为已调用。
(一般来说,应用程序委托(delegate)中应包含尽可能少的特定于应用程序的业务逻辑。通过使用 NotificationCenter
,您可以编写应用程序委托(delegate),以便它不知道或关心哪个 View Controller 需要收到关于传入的“打开 URL”命令的通知。)
关于ios - 当数据改变时如何调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044436/