элемент кнопки теряется при скрытии и показе панели инструментов - PullRequest
3 голосов
/ 12 марта 2010

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

установить код кнопки

-(void)viewDidAppear:(BOOL)animated {
    //NSLog(@"viewDidAppear ");

    [self becomeFirstResponder];
    //Create a button
    UIBarButtonItem *back = [[UIBarButtonItem alloc] 
                        initWithBarButtonSystemItem:UIBarButtonSystemItemRewind 
                target:self action:@selector(goback:)];

    UIBarButtonItem *fixspace1 = [[UIBarButtonItem alloc] 
                                 initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                                 target:self action:nil];

    UIBarButtonItem *next = [[UIBarButtonItem alloc] 
                             initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward 
                             target:self action:@selector(gofwd:)];
    UIBarButtonItem *stop = [[UIBarButtonItem alloc] 
                             initWithBarButtonSystemItem:UIBarButtonSystemItemStop 
                             target:self action:@selector(stopload:)];

    UIBarButtonItem *refresh = [[UIBarButtonItem alloc] 
                             initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
                             target:self action:@selector(refreshWeb:)];


    [self.navigationController.toolbar setItems:[NSArray arrayWithObjects:fixspace1, back, fixspace1, stop, fixspace1, next, fixspace1, nil] animated:YES];
    [self.navigationItem setRightBarButtonItem:refresh animated:YES];

    [self.navigationController.view addSubview:self.navigationController.toolbar];

    [stop release];
    [next release];
    [back release];
    [refresh release];
    [fixspace1 release];
}

и я настроил кнопку на этот метод

-(void)viewDidAppear:(BOOL)animated 

этот код используется для скрытия панели инструментов

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    [self.navigationController setToolbarHidden:YES animated:YES];

alt text

Ответы [ 3 ]

9 голосов
/ 24 марта 2010

Документированный метод для установки элементов панели инструментов - через свойство toolbarItems контроллера вида . В той же справке UINavigationController также перечислено свойство toolbar как доступное только для чтения и, в частности, предупреждение

Вы не должны изменять UIToolbar объект напрямую.

Поэтому попробуйте изменить

[self.navigationController.toolbar setItems:[NSArray arrayWithObjects:fixspace1, back, fixspace1, stop, fixspace1, next, fixspace1, nil] animated:YES];

до

[self setToolbarItems:[NSArray arrayWithObjects:fixspace1, back, fixspace1, stop, fixspace1, next, fixspace1, nil] animated:YES];
1 голос
/ 21 марта 2010

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

[self.navigationController.view addSubview:self.navigationController.toolbar];

Я не экспериментировал с чем-то подобным, но это выглядит неправильно и во многом противоречит философии iPhone SDK. Если объект контроллера уже имеет указатель на панель инструментов, зачем вам нужно добавлять его в представление? Если это подходящее место, объект контроллера сделает это сам.

0 голосов
/ 21 марта 2010

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

...