Несколько @EnvironmentObject одного типаIOS

Программируем под IOS
Ответить
Anonymous
 Несколько @EnvironmentObject одного типа

Сообщение Anonymous »

Я просто хочу передать в представление два объекта EnvironmentObjects, которые являются разными экземплярами одного и того же класса. Я чувствую, что что-то упустил из виду, поскольку это кажется довольно простым.
Самым очевидным способом было бы сделать это обычным способом (который работает, если они являются экземплярами другого класса), вот так :
Вид сверху:

Код: Выделить всё

exampleView()
.environmentObject(vm1)
.environmentObject(vm2)
Подпредставление:

Код: Выделить всё

struct exampleView: View {

@EnvironmentObject var vm1: ViewModel
@EnvironmentObject var vm2: ViewModel

var body: some View {
...
}
}
Но это не работает, поскольку представление установит для vm1 и vm2 исходное значение vm1.
Я искал везде, но не нашел никакого решения, кроме как использовать один класс и изменить свойства класса, например, со «свойства» на «свойство1» и «свойство2». Это не только довольно уродливый код, но и в моем случае это невозможно.
Почему? Проект, над которым я работаю, довольно большой, и у меня нет доступа к некоторой части кода. Класс, который инициализируется дважды, владеет массивом, который заполняется по-разному, в зависимости от других факторов. В представлении некоторые части используются повторно, поскольку массив содержит элементы одного и того же типа, но заполнен разным содержимым.
Если это кажется неправильным для пользовательского интерфейса Swift, сообщите мне. Мне пришлось бы многое переделать, но на первый взгляд это казалось довольно простой проблемой, поэтому я был бы признателен за ответы, в которых я могу сохранить структуру своего класса.

Подробнее здесь: https://stackoverflow.com/questions/693 ... -same-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»