Удалить панель инструментов при нажатии на новый вид - PullRequest
3 голосов
/ 18 мая 2010

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

Я пытался сделать то же самое с [self.navigationController setToolbarHidden:YES animated:YES] во втором контроллере вида, но это дает странную анимацию панели инструментов, скользящую вниз, в то время как вид карты скользит влево.

Использование [self.navigationController setToolbarHidden:YES] в viewDidLoad также вызывает плохой эффект (из-за того, что панель инструментов исчезает в тот момент, когда начинается анимация нажатия, оставляя уродливый пробел).

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

Как я могу заставить панель инструментов "прилипать" к виду карты и выдвигаться вместе с ним, когда я нажимаю новый контроллер вида? Спасибо.

Gourmet Haus Staudt http://img.skitch.com/20100518-xfubyriig48d3ckaemjg2ay8q.jpg

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Получается, что ответом является создание панели инструментов напрямую и добавление ее в представление самостоятельно. Это в коде для UIViewController с UINavigationController. Координаты кадра могут меняться в зависимости от того, что на экране.

- (void)viewDidLoad
{
    // Add a toolbar to the view
    CGRect toolbarFrame = CGRectMake(0, 372, 320, 44);
    UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame];

    UIBarButtonItem *compassButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"compass.png"]
                                                                      style:UIBarButtonItemStyleBordered
                                                                     target:self
                                                                     action:@selector(zoomToCurrentLocation)];

    compassButton.width = 30.0f; // make the button a square shape
    [myToolbar setItems:[NSArray arrayWithObject:compassButton] animated:NO];
    [compassButton release];

    [self.view addSubview:myToolbar];
    [super viewDidLoad];
}
1 голос
/ 18 мая 2010

Я был около этого один день. На самом деле не получить программный ответ, но лучший способ для правильного поведения представлений - это сделать интерфейс в конструкторе интерфейсов. Если вы установите элементы для панели инструментов в вашем коде, например: [self.navigationController setToolbarItems: control1, control2, ..., nil] animated: NO];

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

Вы можете попробовать это:

[self.navigationController setToolbarHidden: YES animated: YES];

в вашем первом контроллере - (void) viewWillDisappear: (BOOL) анимированный метод, и установка скрытого в NO в - (void) viewWillAppear: (BOOL) анимированный метод тоже в первом контроллере.

Надеюсь, это поможет.

PS: И если вы получите программный ответ, дайте мне знать! = Р

0 голосов
/ 18 мая 2010

Переопределить метод -viewWillAppear: второго контроллера вида, чтобы скрыть панель инструментов.

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