Как добавить кнопку на правой стороне панели инструментов в UISplitViewController? - PullRequest
0 голосов
/ 02 июня 2011

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

Вот соответствующий код (в DetailViewController.m):

- (void) viewDidLoad 
{
    // initialize toolbar
    toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake( 0, 0, 768, 44 )];
    titleLabel = [[UILabel alloc] initWithFrame: CGRectMake( 284, 3, 200, 35 )];
    titleLabel.text = @"Title & Location";
    titleLabel.textAlignment = UITextAlignmentCenter;
    [toolbar addSubview: titleLabel];
    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target: nil action: nil];
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle: @"Add Event" style: UIBarButtonItemStyleDone target: rootController action: @selector(parseDone)];
    NSArray *buttonArray = [NSArray arrayWithObjects: flexibleSpace, doneButton, nil];
    [toolbar setItems: buttonArray];
    [doneButton release];
    [flexibleSpace release];
    [self.view addSubview: toolbar];
}
- (void)showRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem 
{
    NSMutableArray *itemsArray = [toolbar.items mutableCopy];
    [itemsArray insertObject: barButtonItem atIndex: 0];
    [toolbar setItems:itemsArray animated:NO];
}
- (void)invalidateRootPopoverButtonItem:(UIBarButtonItem *)barButtonItem 
{
    NSMutableArray *itemsArray = [toolbar.items mutableCopy];
    [itemsArray removeObject:barButtonItem];
    [toolbar setItems:itemsArray animated:NO];
    [itemsArray release];
}

Ответы [ 3 ]

0 голосов
/ 02 июня 2011

Фактически, если вы поместите свой контроллер вида в UINavigationController, вы получите UINavigationBar и все функции контроллера навигации, если вы решите использовать его.

0 голосов
/ 14 июня 2011

Ну, проблема была в том, что я не правильно изменил размер панели инструментов, когда iPad поворачивается в альбомный режим. Исправлена ​​проблема путем добавления этого кода:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if( interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight ) {
    [toolbar setFrame: CGRectMake( 0, 0, 700, 44 )];
}
else {
    [toolbar setFrame: CGRectMake( 0, 0, 768, 44 )];
}

return YES;
}
0 голосов
/ 02 июня 2011

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

В вашем случае кажется, что было бы проще просто использовать панель навигации и установить rightBarButtonItem и leftBarButtonItem.Это должно решить вашу проблему.

...