Как получить табличное представление для динамического отображения информации, только что выбранной из другого табличного представления? - PullRequest
0 голосов
/ 15 февраля 2010

Я работаю над приложением, которое отображает расписание. У меня нет проблем с отображением списков предметов. Мой вопрос касается отображения информации о новом табличном представлении, которая относится к выбору из последнего табличного представления. При этом не нужно делать несколько сотен просмотров таблицы (большой список информации).

Итак, как мне сказать, чтобы iPhone запомнил то, что было выбрано, чтобы он мог отображать информацию из базы данных на основе того, что было выбрано?

Есть идеи?

Ответы [ 2 ]

1 голос
/ 15 февраля 2010

Похоже, вы пытаетесь сохранить ваши данные в tableViewController. Это большая ошибка. Ваши контроллеры представления должны хранить только временные данные, необходимые для немедленной работы интерфейса.

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

Ключевой особенностью модели данных является то, что она не знает, как данные получены или как они отображаются или отправляются. Хорошо сконструированная модель данных будет одинаково хорошо работать с графическим интерфейсом, командной строкой или любым другим интерфейсом человека или компьютера.

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

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

В вашем пользовательском интерфейсе у вас будет одна таблица, контроллер которой будет загружать список в таблицу и записывать, какие строки выбрал пользователь. Затем контроллер вызывает метод модели данных, который перемещает имена в подсписок. Единственное, что знает контроллер, это как запросить список и как сообщить модели данных, какие имена были выбраны. Он понятия не имеет, как будут использоваться данные.

Второй контроллер знает только о свойстве подсписка модели данных и о том, как сообщить модели данных, какое имя в подсписке выбрал пользователь. Когда он открывает свой табличный вид, он заполняет таблицу именами в подсписке, но знает, что сделал другой вид.

Если у вас есть подробный вид, то шаблон повторяется. Модель данных записывает, какое имя было выбрано любым интерфейсом. Контроллер подробного представления знает только, как запросить модель данных для выбранного имени и любые данные, связанные с этим.

Эта конструкция делает каждый контроллер представления независимым от всех остальных. Контроллерам представления даже не нужно знать, что другие существуют, кроме как для навигации.

Эта конструкция делает приложение модульным, простым в обслуживании и расширении. Ваши данные всегда находятся в одном месте и имеют один объект, предназначенный для их защиты и манипулирования ими. Если что-то идет не так с данными, вы точно знаете, где искать.

0 голосов
/ 15 февраля 2010

Вы сохраняете выбор , вызываете вашу базу данных с любой информацией, которая вам нужна из выбора. Затем вы обновляете таблицу или любое другое представление, которое вам нужно, чтобы отобразить результат вызова базы данных.

Если вы дадите мне более подробную информацию о структуре и цели вашего заявления, я могу конкретизировать свой ответ, если вам потребуется дополнительная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...