Загрузка нового контента в UIPopoverController

Я использую раскадровки и переходы в своем приложении для iPad, чтобы создать всплывающее окно, когда пользователь нажимает «Войти». Каждый тип входа имеет свой собственный ViewController, требующий дополнительных контроллеров всплывающих окон.

Уместно ли, чтобы контроллер основного представления генерировал все содержимое всплывающего окна или, скорее, заменял содержимое одного контроллера всплывающего окна?

Например (я попытаюсь представить это с помощью рисования текста_)

1.) MainVC -> Popover («Войти с электронной почтой», «Войти через Facebook» и т. д.) MainVC ‹- Пользователь нажимает кнопку MainVC -> Popover (текстовое поле электронной почты, текстовое поле пароля) MainVC ‹- Пользователь вводит данные ...

2.) MainVC -> Popover («Войти с электронной почтой», «Войти через Facebook» и т. д.) Popover -> Заменить содержимое (загрузить контроллер представления с текстовыми полями) Новое содержимое -> Обработчик входных данных UITextField

Я выбрал вариант 1, потому что его было легко реализовать, хотя вариант 2 кажется более организованным. Что вы считаете лучшей практикой?


person VaporwareWolf    schedule 08.03.2013    source источник


Ответы (1)


Любой вариант может работать, и все, что связано с пользовательским интерфейсом, не является проблемой производительности. Таким образом, «правильный» ответ может зависеть от второстепенных соображений, таких как сложность/ясность кода. Я голосую за создание отдельных экземпляров в раскадровке, а не за перепрофилирование одного экземпляра с кодом рутнима.

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

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

person jbbenni    schedule 08.03.2013
comment
все, что связано с пользовательским интерфейсом, не является проблемой производительности: почему это не проблема производительности? - person Lithu T.V; 09.03.2013
comment
Мой комментарий о производительности должен был сказать, что любая разница в том, как могут работать эти подходы, совершенно незначительна по сравнению со временем, которое требуется пользователю для ввода клавиши или жеста. И вход в систему — это действие, выполняемое один раз, а не повторяющееся. Задержка, конечно, всегда вызывает беспокойство, и вход в сеть не должен блокировать основной поток. - person jbbenni; 09.03.2013