UIToolbar в приложении UISplitView - PullRequest
2 голосов
/ 07 мая 2011

Я пытаюсь показать UIToolBar в RootView приложения UISplitView, код следующий:

self.navigationController.toolbarHidden = NO;
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc]
                                 initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
                                                      target:self 
                                                      action:@selector(refresh:)];    
self.toolbarItems = [NSArray arrayWithObjects:refreshItem, nil];
[refreshItem release];    

Однако я вижу:

enter image description here

Есть черная полоса сверху (я не знаю, откуда она взялась, мне это не нужно), а также полоса внизу, есть ли способ изменить ее размер?

Я хочу получить что-то вроде этого: enter image description here

Ответы [ 4 ]

2 голосов
/ 08 мая 2011

Используя что-то подобное, вы можете добавить элемент панели кнопок в верхней части контроллера:

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
self.navigationItem.leftBarButtonItem = refreshItem;
[refreshItem release];  

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

Если вы хотите, чтобы кнопка отображалась в нижней части контроллера навигации, вы можете попробовать использовать этот подход, вместо этого:

UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
[self setToolbarItems:[NSArray arrayWithObjects:refreshItem, nil animated:YES]];
[self.navigationController setToolbarHidden:NO]; //optional, don't remember if it's required ...
[refreshItem release];

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

1 голос
/ 24 июля 2011

Просто записка для всех, кто сталкивается с этим вопросом.У меня была та же проблема, что и у adit.Проблема оказалась в том, что я настраивал и отображал панель инструментов в методе viewDidLoad вместо метода viewWillAppear.Эти пробелы вызваны настройкой панели инструментов до того, как представление узнает, что оно отображается в ландшафтном режиме.

1 голос
/ 25 мая 2011

У меня была та же проблема, и я ее просто исправил, из-за перемещения кода из Viewdid Load, чтобы опустить страницу,

Как я уже положил в

- (UIBarButtonItem *)barButtonItem {

Перемещение кода, который вы использовали для этого, работал и исправил проблему

Стюарт

0 голосов
/ 13 мая 2011

Самое безопасное и простое решение - настроить UINavigationController для отображения панели инструментов и панели навигации в Интерфейсном Разработчике.

Если это выглядит так, как ожидалось в IB, маловероятно, что оно изменится во время выполнения.время.

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

-(void)viewWillAppear:(BOOL)animated;
{
    [super viewWillApplear:animated];
    [self.navigationController setToolbarHidden:NO
                                       animated:animated];
}

Также обязательно отображайте / скрывайте панель инструментов по мере необходимости в viewWillAppear: для всех контроллеров представления в вашем стеке навигации для достижения наилучшего результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...