在我看来,苹果正在鼓励我们放弃在SwiftUI中使用UIViewController
,但如果不使用视图控制器,我觉得有点无能为力.我希望能够实现某种ViewModel
,它将向View
发送事件.
ViewModel:
public protocol LoginViewModel: ViewModel {
var onError: PassthroughSubject<Error, Never> { get }
var onSuccessLogin: PassthroughSubject<Void, Never> { get }
}
View:
public struct LoginView: View {
fileprivate let viewModel: LoginViewModel
public init(viewModel: LoginViewModel) {
self.viewModel = viewModel
}
public var body: some View {
NavigationView {
MasterView()
.onReceive(self.viewModel.onError, perform: self.handleError)
.onReceive(self.viewModel.onSuccessLogin, perform: self.handleSuccessfullLogin)
}
}
func handleSuccessfullLogin() {
//push next screen
}
func handleError(_ error: Error) {
//show alert
}
}
使用SwiftUI,如果登录成功,我不知道如何推送另一个控制器
此外,如果您能就如何更好地实现我的目标提出建议,我将不胜感激.谢谢.