目前我是一个不明白的人。
问题:
尝试从场景委托连接到视图方法,例如:
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
...
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// guard let contentView = ???? as? ContentView else { return }
// contentView.callMethod(parameter: true)
}
}
struct ContentView: View {
var body: some View {
...
}
func callMethode(parameter: Bool) {
print("called")
}
}
有什么线索如何连接到视图并在两者之间调用方法?
thx 乔
答案 0 :(得分:0)
这与SwiftUI框架的设计背道而驰。您不应具有任何持久视图来调用方法。取而代之的是,根据应用的状态更改创建视图并根据需要显示视图。
例如,如果您的SceneDelegate引用了模型类的实例,并且您的视图依赖于该模型,则可以在scene(_:continue :)中修改模型,并且视图将自动更新。
如果您可以提供有关您要执行的操作的更多详细信息,我也许可以给出更具体的答案。
答案 1 :(得分:0)
非常感谢。完全理解...将阅读文档...
这是一个可能的例子吗?
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
let activity = UserActivityManager()
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let contentView = ContentView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView.environmentObject(activity))
self.window = window
window.makeKeyAndVisible()
if let userActvity = connectionOptions.userActivities.first {
guard let title = userActvity.title else { return }
activity.doAction(action: title)
}
}
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard let title = userActivity.title else { return }
activity.doAction(action: title)
}
}