2013-06-30 2 views
0

Я пытаюсь изменить действие конкретной кнопки назад, но по какой-то причине он не вызывает метод, который я ему даю. Это странно, потому что название действительно меняется, поэтому я решил, что он также должен работать для этого действия. Это мой код для кнопки:Название BackButton меняет, но действие не

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
            initWithTitle: @"Back" 
            style: UIBarButtonItemStyleBordered 
            target:self action: @selector(goBackToChooseMovie)]; 

[self.navigationItem setBackBarButtonItem: backButton]; 

Это мой метод:

-(void)goBackToChooseMovie{ 

    ViewController *VC = (ViewController *)[self.navigationController.viewControllers objectAtIndex:0]; 
    VC.showingPhotoLibraryFromCamera = YES; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
    [self.navigationController popToRootViewControllerAnimated:NO]; 

} 

ответ

1

Это никогда не будет работать, как вы не можете изменить характер кнопки Назад. Apple имеет предопределенные правила для компонентов, предоставленных ими. Существует два варианта:

1) Если вы хотите вызвать свой собственный метод только тогда, вы можете создать одну настраиваемую кнопку с некоторым «обратным» изображением, а затем назначить ее на leftBarButtonItem.

UIImage* image = [UIImage imageNamed:@"backButton.png"]; 
CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
UIButton *back = [[UIButton alloc] initWithFrame:frame]; 
[back setBackgroundImage:image forState:UIControlStateNormal]; 
[back addTarget:self action:@selector(goBackToChooseMovie) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithCustomView:back]; 
self.navigationItem.leftBarButtonItem = leftBarButton; 

2) Вы можете использовать -viewWillDisappear:

-(void) viewWillDisappear:(BOOL)animated { 
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) { 
     // back button was pressed. 
    } 
    [super viewWillDisappear:animated]; 
} 
0

Вы должны изменить код

[self.navigationItem setBackBarButtonItem: backButton]; 

в

self.navigationItem.leftBarButtonItem = backButton; 

Надеется, что это работает для тебя.

Благодаря

Смежные вопросы