Как перевести UIToolbar с родительского представления - PullRequest
1 голос
/ 11 мая 2011

Как я могу перейти от одного UIViewController (с нижней панелью инструментов) к другому (без панели инструментов), чтобы во время анимации панель инструментов уходила с первым видом, что означает, что панель инструментов остается в исходном положении первого взгляда?

Я видел такое поведение в приложении "Вещи".

Просто чтобы прояснить ситуацию, я не ищу таких решений, как скрытие / отображение панели инструментов внутри viewDidAppear.

Ответы [ 2 ]

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

Итак, это решение меня не очень обрадовало, но на данный момент оно кажется единственным.

Смысл в том, чтобы игнорировать встроенное свойство панели инструментов UINavigationController, создать отдельный UIToolbar и поместить его в свой контроллер представления.

// Create your bar items
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

NSArray *toolbarItems = [[NSArray alloc] initWithObjects: flexibleSpace, nil];
[flexibleSpace release], flexibleSpace = nil;

UIToolbar *customToolbar = [[UIToolbar alloc] init];
[customToolbar sizeToFit];
[customToolbar setFrame:CGRectMake(0.0, self.view.frame.size.height - self.navigationController.navigationBar.frame.size.height - customToolbar.frame.size.height, customToolbar.frame.size.width, customToolbar.frame.size.height)];
[customToolbar setItems:toolbarItems];
[[self view] addSubview:customToolbar];
[customToolbar release], customToolbar = nil;

[toolbarItems release], toolbarItems = nil;

Таким образом, панель инструментов будет смещаться вместе с ее видом, не вызывая проблем с анимацией, таких как «белые прямоугольники» или поздняя панель инструментов, когда она помещается в viewDidAppear ...

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

Звучит так, как вы хотите:

- ( void )viewWillAppear: (BOOL)animated
{
    NSArray            *items = ... UIBarButtonItem array...;

    [ super viewWillAppear: animated ];

    [ self setToolbarItems: items animated: animated ];

    ....
}
...