我有一个财产:

@property (strong, nonatomic) IBOutlet UIBarButtonItem *backButton;


它的设置如下:

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(goBack:)];
    backItem.imageInsets = UIEdgeInsetsZero;

    UIToolbar *backToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
    backToolbar.userInteractionEnabled = YES;
    [backToolbar setTransform:CGAffineTransformMakeScale(-1, 1)];
    backToolbar.items = [NSArray arrayWithObjects:backItem, nil];
    backToolbar.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];
    backToolbar.clipsToBounds = YES;

    self.backButton = [[UIBarButtonItem alloc] initWithCustomView:backToolbar];
    self.backButton.enabled = YES;
    self.backButton.imageInsets = UIEdgeInsetsZero;


我原以为会将选择器设置为此:

- (IBAction)goBack:(id)sender {
    NSLog(@"goBack pushed");

    [self.iframeView goBack];
}


但是,尽管iframeView(只是一个UIWebView)确实转到了上一页,但是当我单击按钮时,goBack pushed从未注销。

我也尝试过这样设置动作(在上面的代码下方设置):

[self.backButton setTarget:self];
[self.backButton setAction:@selector(goBack:)];


有什么想法可以调整代码,以便在按下后退按钮时调用选择器?

最佳答案

您是否从情节提要中创建了backButton(因为您将其声明为IBOutlet)?

如果您已经从情节提要中创建了它,则只需按Ctrl左键单击即可将按钮拖动到实现文件.m中,其中- (IBAction)goBack:(id)sender用于创建选择器。

更新:
我只是注意到你这样说


  但是,当我单击该按钮时,永远不会注销goBack push
  iframeView(只是一个UIWebView)确实转到上一页。


UIWebView已经具有goBack功能。所以通过设置

[self.backButton setAction:@selector(goBack:)];


当按下按钮时,它将调用UIWebView的goBack函数。

您所需要的只是给它一个不同的名字:

[self.backButton setAction:@selector(backButtonPressed:)];

- (IBAction)backButtonPressed:(id)sender{
    NSLog(@"goBack pushed");

    [self.iframeView goBack];


}

10-08 05:33