objective-c – 重写-performSelector:在UIBarButtonItem子类中

objective-c – 重写-performSelector:在UIBarButtonItem子类中,第1张

概述我试图继承UIBarButtonItem以添加一些特殊功能.我需要barButtonItem在触摸时切换其外观,因此我试图覆盖performSelector:. 当我使用下面的代码时,我得到一个EXC_BAD_ACCESS(代码= 2 …) -(id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)objec 我试图继承UIbarbuttonItem以添加一些特殊功能.我需要barbuttonItem在触摸时切换其外观,因此我试图覆盖performSelector:.

当我使用下面的代码时,我得到一个EXC_BAD_ACCESS(代码= 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];}

不幸的是,我想通过设置self.customVIEw = nil来切换拥有一个customVIEw和普通的UIbarbuttonItem,这有时只能工作.但这是一个完整的问题.谢谢大家.

我会再等一会儿,选择最佳答案,看看是否有更好的解决方案.

解决方法 使用简单的UIVIEw实现此功能可能更好,您可以以任何给定的方式进行修改.

UIbarbuttonItem确实提供了一种基于自定义UIVIEw进行初始化的方法:

– (ID)initWithCustomVIEw:(UIVIEw *)customVIEw

然后,您可以告诉UIVIEw根据UIbarbuttonItem触发的触摸事件更改其外观.

总结

以上是内存溢出为你收集整理的objective-c – 重写-performSelector:在UIBarButtonItem子类中全部内容,希望文章能够帮你解决objective-c – 重写-performSelector:在UIBarButtonItem子类中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存