iOS - Views (ViewController), имеющий постоянные данные - PullRequest
0 голосов
/ 07 октября 2018

В настоящее время я работаю над приложением, использующим Xcode / swift 4, где мне нужно представление (давайте назовем его loggerView), которое не является основным представлением, чтобы иметь возможность получать данные из основного представления (или других представлений) вспособ, который позволяет указанным данным отображаться всякий раз, когда отображается loggerView (в данном случае используется текстовое представление)Я понимаю, что могу использовать последовательность для представления / отправки этих данных (текстовый журнал msg) в loggerView при переходе к loggerView, но есть несколько проб с этим:

  1. При использовании сегментов данные могут быть переданы только сразу через segue подготовить при переходе, а не по частям, что мне нужно.

  2. Когда пользователь выходит из loggerView обратно к основному (или другому)просмотр всех данных в loggerView потерян.

Из-за (2) мне понадобится первичное представление для хранения всех данных регистрации, относящихся к информации, которую я хочу отобразить в loggerView, так чтопосле перехода к loggerView все данные могут быть предоставлены каждый раз.Это не идеально, потому что я не хочу, чтобы основное представление сохраняло это, я ищу способ запустить эти данные в loggerView таким же образом, как делегат мог бы работать обратно из loggerView-> primaryView, где он может быть вызван вв любое время, когда показывается loggerView.

Я думаю, что главная проблема здесь заключается в том, что я работаю с ситуацией просмотра parent-> child (используя контроллер навигации), где каждый раз, когда мы переходим от дочернего к родительскому дочернему.view (в данном случае loggerView) удаляется из памяти, поэтому все данные, относящиеся к loggerView, удаляются, поэтому необходимо каждый раз открывать все при открытии loggerView.

Существует ли способ сделать более одного представления постоянным(память), а затем отправлять данные между primaryView и этим другим представлением на временной основе, подобно тому, как делегаты могут работать в обратном порядке (loggerView-> primaryView)?

1 Ответ

0 голосов
/ 17 октября 2018

Подводя итоги нашего обсуждения в комментариях:

Ваше возражение против сохранения данных ребенка в родительском месте, вероятно, неуместно.Такое поведение нормальное и стандартное.Если вы настаиваете на отличии, вы можете хранить данные в UserDefaults как глобальные и постоянные, но это обычно рассматривается как опора.

По сути, ваше желание сохранить контроллер представления просто для того, чтобысохранять некоторые данные, которые он получил от пользователя, просто неправильно.Предположим, что появляется диалоговое окно с просьбой ввести имя.Вы вводите имя и нажимаете OK, и диалог исчезает.Вы не верите, что диалог должен сохраняться за кулисами только для того, чтобы держать имя, не так ли?Нет - то, что сохраняется, это имя .Диалог и весь механизм, который позволял ему появляться, были просто временными для управления пользовательским интерфейсом.

Это может помочь вам снова и снова повторять «контроллер представления модели» (MVC), пока выРабота.Данные, собранные от пользователя, являются моделью.Если вы хотите, чтобы оно сохранялось, сохраняйте it .Но не сохраняйте контроллер представления просто для того, чтобы сделать это.Думайте о контроллерах представления как о ловких;их цель - приходить и уходить, так как взгляды, которые они контролируют, приходят и уходят.Если у вас есть данные, которые необходимо сохранить, их необходимо передать или поместить в более постоянное место.Модель, взгляд, контроллер.Три разные вещи.Не пытайтесь превратить контроллер в модель!

...