Желательно ли использовать один и тот же xib в представлении UINavigationController и в модальном представлении? - PullRequest
3 голосов
/ 16 сентября 2009

У меня есть представление (и соответствующий контроллер представления) в моем приложении для iPhone, которое позволяет пользователю редактировать настройки приложения. Это представление доступно через меню (представление таблицы). Я использую pushViewController в своем подклассе UIViewController, чтобы показать его. Когда я делаю это, он выглядит так, как я и ожидал - панель навигации появляется сверху XIB, и пустое пространство, которое я оставил там в XIB, занято.

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

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

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

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

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

1 Ответ

1 голос
/ 17 сентября 2009

Каждый UIView имеет свойство autoresizingMask. Сконфигурировав это (это можно сделать в Интерфейсном Разработчике), вы сможете повторно использовать представление и автоматически изменять его размер, чтобы занимать весь экран, когда там не должно быть навигационной панели.

Документация Apple находится здесь:

http://developer.apple.com/iPhone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW10

...