UIBarButtonItem
いくつかの特別な機能を追加するためにサブクラス化しようとしています。barButtonItem
タッチしたときに外観を切り替える必要があるため、をオーバーライドしようとしていますperformSelector:
。
以下のコードを使用すると、EXC_BAD_ACCESS (code=2 ...)
-(id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2
{
// Do something
return [super performSelector:aSelector withObject:object1 withObject:object2];
}
私の推測では、誤ってオーバーライドしようとしているperformSelector:
(別の方法はありますか?)か、のメソッドを誤って呼び出していsuper
ます。
3時間以上解決策を探した後、何も見つかりませんでした。どんな助けでも大歓迎です。
更新: 次の作品:
@implementation CustomBarButtonItem
- (void)setTarget:(id)target
{
_realTarget = target;
super.target = self;
}
- (void)setAction:(SEL)action
{
_realAction = action;
super.action = @selector(pressed);
}
- (void)pressed
{
[self doCustom]; // implement this somewhere
[_realTarget performSelector:_realAction withObject:nil afterDelay:0];
}
残念ながら、たまにしか機能しない設定でcustomView
、通常の外観と通常の外観を切り替えたいと思いました。しかし、それはまったく別の問題です。皆さんありがとう。UIBarButtonItem
self.customView = nil
より良い解決策があるかどうかを確認するために、もう少し待ってベストアンサーを選択します。