[英]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.