2015-11-06 3 views
0

На моем приложении IOS, у меня есть следующий вид контроллеры навигации схема на моей раскадровкеКак переопределить панель навигации по умолчанию?

Navigation Controller -> ViewController A -> B ViewController

Я могу настроить панель навигации на View Controller A, но настраиваемая панель навигации, разработанная на интерфейсе, не отображается для View Controller B. Он показывает только кнопку «Назад».

Могу ли я определить настраиваемую панель навигации для «внутренних» представлений на построителе интерфейса? Я знаю, что могу сделать это программно, но если я смогу избежать этого, тем лучше.

+0

Определить пользовательскую панель навигации. Как название и barbuttonitems или совершенно новый взгляд? – beyowulf

+0

@beyowulf: я добавил панель навигации из окна инструментов в «View Controller B», затем я изменил заголовок и добавил правую кнопку. Ничего из этого не отражено. – StackOverflower

+0

Прочтите ответ @bensarz. Вам не нужно тянуть панель навигации. Если ваш навигационный контроллер правильно настроен, он уже представлен во всех его представлениях контроллера. Тем не менее, вы должны установить каждый из них отдельно. Дайте каждому свой титул и свои собственные барбютоны. – beyowulf

ответ

3

Я думаю, что вам может не хватать важного элемента в вашем понимании. UINavigationBar, принадлежащий UINavigationController, представляет собой просто контейнер для каждого контроллера UINavigationItem контроллера вида. Используйте этот элемент навигации, чтобы добавлять/удалять кнопки, характерные для каждого контроллера вида.

Используя свой собственный пример:

UINavigationController (отображает навигационный пункт каждого контроллера представления внутри своей навигационной панели) ->UIViewController A (включает в себя UINavigationItem А, которая имеет свои собственные кнопки) ->UIViewController B (включает в себя UINavigationItem B, которая имеет свои собственные кнопки)

Если вы хотите скрыть кнопку возврата вы можете сделать это, добавив следующую строку внутри каждого контроллера представления или в суперкласс вашего зрения контроллера:

self.navigationItem.hidesBackButton = true

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

Надеюсь, это поможет!

+0

+1 Спасибо !. Таким образом, нет возможности редактировать панель навигации для каждого контроллера представления с помощью построителя интерфейса? (используя схему, которую я опубликовал по моему вопросу) – StackOverflower

+0

Да, вы можете сделать это в построителе интерфейса. Просто перетащите элемент навигации из нижнего правого угла в контроллер вида. Затем добавьте кнопки, которые вы хотите, чтобы ваш контроллер просмотра отображался внутри элемента навигации. Возможно, вам придется скрывать кнопку «назад» программно. – bsarrazin

+0

Очень ясно, спасибо – StackOverflower