Как правильно разместить UINavigationBar в сложной иерархии представления? - PullRequest
0 голосов
/ 08 марта 2011

В приложении для iPad, над которым я работаю, у меня есть 'необычное' представление иерархии:

enter image description here

Если я установил mastercontroller, чтобы не показывать UINavigationBar из UINavigationController, пользовательский интерфейс в порядке (отображается только строка состояния).

enter image description here

После того, как я попытаюсь вставить detailcontroller в UINavigationController (на этот раз я хочу, чтобы панель отображалась), навигационная панель отображается смещенной по оси y (это кадр показывает, что ее начало равно (0,20) ) а 20 это высота строки состояния, верно? ...)

И когда я возвращаюсь к mastercontroller, бар все еще там, переведено. Вот что я получаю:

enter image description here

Любая подсказка, как я могу решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

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

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

Если UINavigationController не имеет parentViewController, он в основном предполагает, что он находится в окне.

1 голос
/ 11 марта 2011

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

Идея состоит в том, чтобы создать подкласс UINavigationController и поместить представление и управление им в этот подкласс. Таким образом, экземпляр этого нового контроллера может быть применен непосредственно к главному окну, и другие контроллеры могут быть помещены в него.

...