Эффективное переключение между контроллерами представления - PullRequest
0 голосов
/ 19 января 2012

Чтобы переключаться между представлениями в моем приложении для iOS, я использую Modal View Controllers.Это работает хорошо, но это плохая практика кодирования?Будет ли это вредно для использования памяти моим приложением?

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

  • Основной вид: имеет кнопки для перехода к определенным информационным представлениям
  • Вид информации: имеет кнопки для перехода к определенным веб-страницам для получения информации.
  • Просмотр через Интернет: отображение информации через UIWebview

У меня есть импровизированная панель навигации вверху для навигации «назад» и «домой» на главной странице.

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

В настоящее время я переключаюсь между видами так:

newViewController *newView = [[newViewController alloc] init];
[self presentModalViewController:newView animated:YES];

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

Есть ли лучший способ?Пожалуйста, предоставьте пример кода с вашим ответом.Спасибо!

РЕДАКТИРОВАТЬ: Я прошу прощения за изначально не хватает информации.Я разместил намного больше информации.Если вам нужно что-то еще, пожалуйста, прокомментируйте.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Использование контроллеров модального представления обычно зарезервировано для случаев, когда вам необходимо временно отобразить представление, например, когда контроллер «Новое сообщение» представлен приложением Apple «Сообщения».Еще один способ сделать то, что вы хотите, который требует немного больше настроек, это:

[self.navigationController pushViewController:newView animated:YES];

Хорошее объяснение, объясняющее разницу между ними, можно найти здесь , а также вопросы поПереполнение стека здесь и здесь .Хороший небольшой урок о том, как настроить UINavigationController, можно найти здесь , а предыдущий вопрос SO здесь охватывает тему пользовательских анимаций, в то время как некоторый исходный код предоставлен здесь может также помочь вам.Уф.Это много ссылок.

0 голосов
/ 19 января 2012

Контроллеры модального представления имеют определенную цель получения «дополнительной информации» в потоке программы.Они не предназначены для использования большего / меньшего количества памяти.На самом деле ни один конкретный стиль контроллера представления не разработан с учетом потребления памяти.Если вы собираете иерархические биты информации, UINavigationController в сочетании с UITableViewController может быть подходящим вариантом.Аналогичным образом, если вам нужна часть информации (и, скажем, вы не можете продолжить без получения этой информации), вы представляете модальный контроллер вида (своего рода), предупреждающий пользователя.

...