Я читаю этот поток в StackOverflow о внедрении зависимостей, и я действительно стремлюсь использовать идеи, которые дает ответ с самым высоким рейтингом.Однако у меня возникают проблемы с тем, чтобы заставить их работать в моем случае, и я везде искал решение, но мне не повезло.
Чтобы проиллюстрировать мою ситуацию в простейших терминах, скажем, у меня есть:
ViewController A - в котором пользователь выбирает фотографию
ViewController B - в котором пользователь затем выбирает цвет
ViewController C - в котором изображение и цвет отображаются обратно пользователю
Я вижу, как использовать инъекцию зависимости, чтобы указать, что ViewController A должен переместить ViewController B в контроллер навигации после выбора фотографии, но где я должен хранить фотографию, которая была выбрана?Как я должен сделать его доступным для отображения в ViewController C?
Кроме того, как я должен сказать ViewController B, что ему нужно нажать ViewController C, когда выбран цвет?
Единственное решение, которое яМожно подумать о том, что строго следует идеям вышеупомянутого потока: иметь свойство 'photo' в ViewController B, которое устанавливается ViewController A, когда оно передает его в контроллер навигации.Но это кажется мне «плохой идеей», потому что в общем случае ViewController B не должен интересоваться фотографиями, поскольку его единственная цель в жизни - выбрать цвет и двигаться дальше.
В попытке решить эту проблему япредложили 2 возможности:
1 / Заставить все ViewControllers отчитываться перед центральным делегатом.
Это, кажется, идет вразрез с тем, что поток внедрения зависимостиговорит, но это все еще кажется самым простым способом.Т.е. ViewController A выбирает фотографию и сообщает об этом делегату.Делегат сохраняет фотографию для дальнейшего использования и передает ViewController B на контроллер навигации.Когда цвет выбирается, он сохраняет его и отправляет ViewController C, передавая ему значения для цвета и фотографии, сохраненные ранее.
2 / Передача какого-либо объекта свойств между контроллерами.
Я мог бы создать объект со свойствами 'color' и 'photo' и передать его ViewController A. Свойство photo было бы установлено в ViewController A, а затем объект был бы передан ViewController B, который установил бысвойство color перед передачей его в ViewController C. Для отображения.
Обе опции кажутся мне «нормальными», но ни одна из них не совсем верна.
Возможно, я полностью неправильно понял внедрение зависимостиВ таком случае, пожалуйста, дайте мне знать!В противном случае любые мысли по поводу вышеперечисленного были бы огромными.
Заранее спасибо!