Я хочу изменить значение моего @EnvironmentObject, используя другое представление для его вызова. Но я получаю эту ошибку. Вот мои синтаксисы
МОЙ КЛАСС
class PageSettings: ObservableObject {
@Published var currentPage = "splash"
@Published var jobTitle = "Pick a job!"
}
ПРОСМОТР (В этом представлении я получаю «Выберите работу!» В виде текста и Я хочу изменить его, когда щелкнул другой параметр в другом представлении, называемом «JobTitleView»)
struct Test: View {
@EnvironmentObject var title: PageSettings
var body: some View {
HStack{
Button(action: {
let alertHC = UIHostingController(rootView: JobTitleView())
alertHC.preferredContentSize = CGSize(width: 300, height: 200)
alertHC.modalPresentationStyle = UIModalPresentationStyle.fullScreen
UIApplication.shared.windows[0].rootViewController?.present(alertHC, animated: true)
})
{
Text(self.title.jobTitle)
Image(systemName: "chevron.down")
}
}.frame(height:50).font(.subheadline)
}
}
JOBTITLE VIEW
struct JobTitleView: View {
@EnvironmentObject var title: PageSettings
let options = ["Manager", "Employee"]
var body: some View {
ForEach(options) { item in
Button(action:{
self.title.jobTitle = item
UIApplication.shared.windows[0].rootViewController?.dismiss(animated: true, completion: {})
}){
Text(item).font(.custom("Avenir Next Regular", size: 30))
}
}
}
}
Когда я нажал элемент, я получил следующую ошибку:
Неустранимая ошибка: Обнаружен объект ObservableOb типа типа PageSettings. В качестве предка этого представления может отсутствовать View.environmentObject (_ :) для PageSettings. , линия 55
PS. Я получил расширение для использования ForEach "без идентификатора"
extension String: Identifiable {
public var id: String {
return self
}
}