【发布时间】:2020-04-01 07:35:14
【问题描述】:
我有一个 swift UIHostingController 可以呈现 SwiftUI。我调用了一个视图中的函数,该函数构建得很好,但没有创建预期的输出。
class LoginView: UIHostingController<LoginViewComponent> {
required init?(coder: NSCoder) {
super.init(coder: coder, rootView: LoginViewComponent())
}
override func viewDidAppear(_ animated: Bool) {
sessionHandler()
}
func sessionHandler(){
let user = User()
if user.isLoggedIn(){
view.isUserInteractionEnabled = false
print("Authenticating Session")
self.rootView.loginState(state: "success")
}else{
view.isUserInteractionEnabled = true
print("Needs Logging in")
}
}
}
函数 ("loginState(state: "success")") 在 SwiftUI 视图类中调用时有效,但是从宿主控制器调用时它不起作用。
任何帮助将不胜感激。
【问题讨论】:
-
为什么不能在 LoginViewComponent 中完成所有这些操作?正如@Asperi 提到的,您可以使用模型对象来跟踪用户状态,然后在整个视图上使用 SwiftUI 的 .disabled(_:) 修饰符。 disabled 参数的值将来自您的状态对象。
标签: ios swift xcode swiftui swift5