BackButton标题确实改变但行动没有改变

时间:2013-06-30 06:09:22

标签: uibarbuttonitem

我正在尝试更改特定后退按钮的操作但由于某种原因它不会调用我给他的方法。这很奇怪,因为标题确实发生了变化,所以我认为它也适用于该动作。这是我的按钮代码:

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];

}

2 个答案:

答案 0 :(得分:1)

这永远不会起作用,因为您无法改变后退按钮的性质。 Apple为其提供的组件预定义了规则。有两种选择:

1)如果您只想调用自定义方法,那么您可以使用一些" back"创建一个自定义按钮。图像,然后将其分配给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];
}

答案 1 :(得分:0)

您应该更改代码

[self.navigationItem setBackBarButtonItem: backButton];

self.navigationItem.leftBarButtonItem = backButton;

希望它适合你。

由于