Передача environmentObject из NSHostingController в представление SwiftUI - PullRequest
0 голосов
/ 08 марта 2020

У меня есть приложение раскадровки macOS, в котором у меня есть вид SwiftUI, который размещен с использованием NSHostingController. Мне нужно передать EnvironmentObject этому представлению SwiftUI из моего NSHostingController. Я не могу этого добиться. В настоящее время я написал этот код, но он не работает. В чем может быть проблема здесь?

import Cocoa
import SwiftUI

class SearchText: ObservableObject {
    @Published var text = ""
}

class HostingController: NSHostingController<SwiftUIView> {


    @objc required dynamic init?(coder: NSCoder) {

        super.init(coder: coder, rootView: SwiftUIView().environmentObject(SearchText()))
    }
}

1 Ответ

3 голосов
/ 08 марта 2020

Проблема в том, что модификатор .environmentObject возвращает тип, отличный от указанного в обобщениях, ie SwiftUIView.

Здесь возможен подход

class HostingController: NSHostingController<AnyView> {

    @objc required dynamic init?(coder: NSCoder) {
        super.init(coder: coder, rootView: 
            AnyView(SwiftUIView().environmentObject(SearchText())))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...