簡體   English   中英

未調用iOS Objective-C UIBarButtonItem操作

[英]iOS Objective-C UIBarButtonItem Action Not Called

我有一個財產:

@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從情節backButton創建了backButton (因為您將其聲明為IBOutlet)?

如果您已經從情節- (IBAction)goBack:(id)sender創建了它,則只需按Ctrl左鍵單擊即可將按鈕拖動到實現文件.m ,其中- (IBAction)goBack:(id)sender將創建選擇器。

更新:我只是注意到你說了這個

但是,盡管iframeView(只是一個UIWebView)確實轉到了上一頁,但單擊按鈕后,永遠不會注銷goBack推送。

UIWebView已經具有goBack功能。 所以通過設置

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

當按下按鈕時,它將調用UIWebView的goBack函數。

您所需要的只是給它一個不同的名字:

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

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

    [self.iframeView goBack];    

}

我嘗試了您的代碼,發現缺少一行代碼,這就是為什么未觸發選擇器goBack:的原因。 如果我沒記錯的話,編譯時看不到“播放”按鈕

self.navigationItem.rightBarButtonItem = self.backButton;

正如我觀察到的那樣,您已經通過編程方式創建了工具欄工具欄按鈕,也不需要@property (strong, nonatomic) IBOutlet UIBarButtonItem *backButton; 如果您沒有在代碼中的其他地方使用它,或者您必須省略IBOutlet

希望這些會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM