В настоящее время мы используем координаторов для управления жизненным циклом навигации нашего приложения SwiftUI. По очевидным причинам масштабируемости мы выбрали шаблон координатора. Теперь мы хотим внедрить объект-координатор в качестве объекта среды; однако, поскольку координатор владеет родительским контроллером навигации, которому принадлежат дочерние элементы UIHostingViewControllers, мы хотим передать координатора как слабый EnvironmentObject. Возможно ли это вообще?
Код координатора:
final public class RideCoordinator: PresentingCoordinator, ObservableObject {
// MARK: - Start
public override func start(options: [String : Any]? = nil) -> MSKit.CoordinatorNavigationViewController {
_ = super.start(options: options)
let welcomeView = MainScreen().environmentObject(self)
startSwiftUIView(rootView: welcomeView, animated: false)
return navigationController
}
}
Пример просмотра:
struct MainScreen: View {
// MARK: - Environment
/// **Error** Property 'coordinator' with a wrapper cannot also be weak
@EnvironmentObject weak var coordinator: RideCoordinator?
// MARK: - View
var body: some View {
Text("Welcome")
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... iftui-view
Передайте EnvironmentObject как слабую ссылку на SwiftUI View. ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение