Верхняя панель не отображается для presentModalViewController - PullRequest
4 голосов
/ 01 сентября 2011

Я создал подкласс UIViewController с именем addItemToListViewController.Я также выбрал добавить «xib» и просто создал простую страницу с парой меток и текстовым полем.В конструкторе интерфейса я выбрал «Верхняя панель - панель навигации», чтобы при ее запуске в стеке при запуске приложения верхняя панель соответствовала исходному главному окну.В Интерфейсном Разработчике он показывает верхнюю границу, но когда я запускаю приложение в симуляторе, верхняя панель не отображается после отображения представления.

Вот код, который я поместил в rootViewController для представления представленияконтроллер

- (IBAction)addButtonPressed:(id)sender 
{   
    AddItemToListViewController *addItemToListViewController = [[AddItemToListViewController alloc] initWithNibName: @"AddItemToListViewController" bundle:nil];

    [self presentModalViewController: AddItemToListViewController animated: YES];
    [AddItemToListViewController release];
}

У меня может быть только верхняя панель, если я вручную добавлю панель навигации в xib.Если я должен добавить панель навигации в мой xib, какова цель атрибута «Верхняя панель»?

Ответы [ 3 ]

5 голосов
/ 01 сентября 2011
- (IBAction)addButtonPressed:(id)sender 
{   
    AddItemToListViewController *addItemToListViewController = [[AddItemToListViewController alloc] initWithNibName: @"AddItemToListViewController" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addItemToListViewController];
    [self presentModalViewController: navController animated: YES];
    [AddItemToListViewController release];
    [navController release];
}
4 голосов
/ 01 сентября 2011

Эта «верхняя панель - панель навигации» в InterfaceBuilder - это то, что называется «симулированной метрикой».Это поможет вам правильно расположить изображение, когда другие визуальные элементы - строка состояния, панель навигации или панель вкладок - могут занимать часть экрана устройства.На самом деле он не делает ничего, кроме сокращения вертикальных размеров представления, определенного NIB.Цель состоит в том, чтобы помочь вам создать макет вашего представления, а не создать компонент, который появится в вашем приложении.

Если вам нужна панель навигации, то у вас есть два варианта.Первым выбором является использование контроллера навигации (из которого ваш первоначальный вид должен быть корневым) и вызов

[self.navigationController pushViewController:newVC animated:YES];

Процесс правильной настройки контроллера навигации и т. Д., Нетривиален, и выследует поискать, чтобы найти лучший способ сделать это для вашего приложения.Для простого приложения, особенно если вы только изучаете iOS, вы можете использовать шаблон «Приложение на основе навигации» при создании нового проекта.С помощью navcon вы получаете все причудливое поведение, обычно связанное с этой верхней панелью, - автоматическую кнопку возврата, необычную прокрутку влево / вправо при переходе к подробному виду и т. Д.

Второй вариант - поместить«поддельная» панель навигации в подробном представлении с использованием объекта «Панель навигации».Вы можете найти этот объект, а также некоторые другие связанные объекты, в нижней половине «Представления утилит» (самая правая панель) в XCode.Просто перетащите объект в XIB и blammo, у вас будет серая полоса высотой 44 пикселя.Эта панель навигации похожа на то, что вы получаете при использовании контроллера навигации, за исключением того, что вы не получаете функциональность стека;Вы все еще можете добавлять кнопки влево и вправо, изменять заголовок, подкрашивать его до определенного цвета и т. д.

1 голос
/ 01 сентября 2011

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

Короче говоря: его есть на тот случай, если вы будете использовать xib для обычного вида:)

...