1. ホーム
  2. iphone

[解決済み] UIBarButtonItem: target-actionが機能しない?

2023-06-26 07:13:03

質問

カスタムビューを UIBarButtonItem を呼び出すことによって設定されます。 -initWithCustomView . バー ボタン アイテムは正常に表示されますが、それをタップすると、ターゲット オブジェクトのアクションが呼び出されません。

以下は私のコードです。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"someImage.png"]];
UIBarButtonItem *bbItem = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.navigationItem.leftBarButtonItem = bbItem;
[imageView release];
[bbItem setTarget:self];
[bbItem setAction:@selector(deselectAll)];

どのように解決するのですか?

UIBarButtonItemのターゲットとアクションは、カスタムビューには適用されないと思います。 UIImageViewの代わりにUIButtonを使用し、ターゲットとアクションをボタンに適用してみてください。

Swiftでのサンプルコードです。

let button  = UIButton(type: .Custom)
if let image = UIImage(named:"icon-menu.png") {
    button.setImage(image, forState: .Normal)
}
button.frame = CGRectMake(0.0, 0.0, 30.0, 30.0)
button.addTarget(self, action: #selector(MyClass.myMethod), forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem(customView: button)
navigationItem.leftBarButtonItem = barButton