Скрыть навигационный контроллер нижней панели

#iphone #objective-c #ios #xcode #interface-builder

#iPhone #objective-c #iOS #xcode #конструктор интерфейса

Вопрос:

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

Я знаю, что могу использовать [self.navigationController setToolbarHidden:YES]; но мой вопрос не в том, как это сделать с помощью кода, а в том, как заставить это работать через Interface Builder.

введите описание изображения здесь

Вот скриншот того, о чем я говорю. Смотрите справа, как я выбрал нижнюю панель: Нет — при этом нижняя панель, показанная ранее слева, удаляется. Если я установлю для него значение inferred (вместо None), нижняя панель отобразится в предварительном просмотре IB.

Как мне заставить это работать правильно?

Ответ №1:

Вы не можете установить это в Interface Builder. Если вы обратили внимание на заголовок раздела в IB, где вы можете включать / выключать эти различные панели, там написано «simulated». Эти опции предназначены только для того, чтобы помочь вам визуализировать ваш пользовательский интерфейс в IB при его разработке. Они абсолютно не влияют на запущенное приложение.

Комментарии:

1. «ого! Итак, я должен просто использовать код в viewWillAppear и viewWillDisapper методах, чтобы скрыть его и вернуть обратно соответственно?

2. Да, это то, что вы должны сделать.

3. Также обратите внимание, что существует опция под названием «Скрывает нижнюю панель при нажатии», которая будет делать то, что вы просите, в случае, если рассматриваемый ViewController помещен в стек навигации.

4. Есть ли какой-нибудь способ анимировать это?

5. @James, мое предложение действительно анимирует процесс скрытия, да.

Ответ №2:

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

 -(void) viewWillAppear:(BOOL)animated
{
    [self.navigationController.toolbar setHidden: YES];
}

-(void) viewWillDisappear:(BOOL)animated
{
    [self.navigationController.toolbar setHidden: NO];
}
  

Ответ №3:

Включите функцию «Скрывает нижнюю панель при нажатии» в IB на случай, если ваш ViewController помещен в стек UINavigationController.

Это должно в точности выполнять то, о чем вы просите. В качестве бонуса система будет красиво анимировать скрытие и отображение.

Комментарии:

1. Я вижу проблему с этим: когда меня возвращают к тому первоначальному контроллеру просмотра, у которого есть панель инструментов, у него нет панели инструментов, когда я возвращаюсь к нему.

2. @James Это можно решить, установив параметр UINavigationController » Показывает панель инструментов «.