2015-02-23 2 views
1

Я начинаю новый проект, и у меня есть некоторые сомнения в отношении передовых методов раскадровки, в частности о дополнительных скрытых видах (показывать только при определенных обстоятельствах).Должны ли дополнительные представления быть добавлены раскадровкой/xib, а затем скрыты или добавлены программно? (Хорошая практика)

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

Это простой пример, но что, если есть не только UIProgressBar, но и несколько скрытых (необязательных) кнопок? Что делать, если некоторые из кнопок перекрываются? (Я знаю, что наложенная кнопка плохой дизайн, но только для целей примера)

Должны ли эти скрыть или добавить программно? Как насчет производительности? Некоторые говорят, что для разбора раскадровки/Xib требуется больше времени, чем просмотр с программной сборкой.

ответ

4

В статье Дональда Кнута «Структурированное программирование с заявлениями GoTo» он писал: «Программисты тратят огромное количество времени на размышления о скорости некритических частей своих программ или беспокоятся о них, и эти попытки эффективности фактически имеют сильную негативное влияние при отладке и обслуживании. Мы должны забыть о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация - корень всего зла. Однако мы не должны упускать наши возможности в этих критических 3% ».


Итак, вы пытаетесь решить проблему производительности вы на самом деле не имеют (в данный момент). Вы решили иметь постоянное или временное представление на основе контекста использования вида, а не некоторые проблемы с производительностью передачи данных между xib/stb и программным подходом, похожим на платформы-войны, но в противном случае, учитывая, как компилятор LLVM работает сегодня, и то, что производительность HW iPhone 4 или выше, в основном ерунда.

Это простое правило. Имейте все представления в IB, спрячьте или покажите их по мере необходимости и добавьте/удалите представление программно , только если вы можете дать вескую причину.

Я понимаю, что вы инстинктивное желание сделать это правильно, поэтому вместо того, чтобы пытаться управлять одним видом milion в одном контроллере, взгляните на проблему, которая сатирически называется Massive View Controller.

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

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

+0

Отличный ответ. Я приложу больше усилий к вещам, которые на самом деле имеют значение –

0

если вы планируете использовать раскадровки; предложили бы иметь вид/кнопки и т. д. вы всегда можете скрыть/отобразить то же самое из кода. имеют продуманный процесс, а не кластерный вид.У вас несколько просмотров и сделайте ваше приложение красивым.

Смежные вопросы