Objective c 如何跟踪UIButton被按下的次数?

Objective c 如何跟踪UIButton被按下的次数?,objective-c,ios,xcode,uibutton,Objective C,Ios,Xcode,Uibutton,我需要知道我的程序中的一个按钮被按下了多少次。我尝试将UIButton分类,并向其添加属性,以便每次按下按钮时,我都会说sender.someproperty++但是当我向类别添加属性时编译器会抱怨 我能追踪到这个吗?我希望Xcode中的每个对象都有一个randomunassigned integer属性,您可以随机为其分配不同的值来跟踪每个对象 我第一次按下按钮,我希望有事情发生,第二次,我希望有其他事情发生,第三次,我希望有其他事情发生,然后第四次我希望它是默认的,就像我第一次按下它一样。您

我需要知道我的程序中的一个按钮被按下了多少次。我尝试将
UIButton
分类,并向其添加属性,以便每次按下按钮时,我都会说
sender.someproperty++
但是当我向类别添加属性时编译器会抱怨

我能追踪到这个吗?我希望Xcode中的每个对象都有一个random
unassigned integer属性,您可以随机为其分配不同的值来跟踪每个对象


我第一次按下按钮,我希望有事情发生,第二次,我希望有其他事情发生,第三次,我希望有其他事情发生,然后第四次我希望它是默认的,就像我第一次按下它一样。

您要做的是在按钮所在视图的视图控制器中创建一个buttonPressedCounter属性,并以这种方式跟踪它

至于更改功能,请为buttonPressedCounter=0、1和2定义它,然后在buttonPressedCounter=2的行为中重置计数器,或者您的检查应基于buttonPressedCounter%3

编辑评论: 我认为,您还可以创建一个扩展UIButton的新类,并在其中声明一个计数器属性。这应该适合您,并且可能比一系列计数器变量更适合您的口味

可能看起来像这样

@interface UIButtonCountable : UIButton
{
    int _clickCounter;
}

@property (nonatomic) int clickCounter;

@end

另一种选择是不使用UIButton,而是使用具有3个可能值的滑块或分段控件,尽管我对这两种方法几乎没有经验。

您要做的是在按钮所在视图的视图控制器中创建buttonPressedCounter属性,并以这种方式跟踪它

至于更改功能,请为buttonPressedCounter=0、1和2定义它,然后在buttonPressedCounter=2的行为中重置计数器,或者您的检查应基于buttonPressedCounter%3

编辑评论: 我认为,您还可以创建一个扩展UIButton的新类,并在其中声明一个计数器属性。这应该适合您,并且可能比一系列计数器变量更适合您的口味

可能看起来像这样

@interface UIButtonCountable : UIButton
{
    int _clickCounter;
}

@property (nonatomic) int clickCounter;

@end

另一种选择是,不要使用UIButton,而是使用带有3个可能值的滑块或分段控件,尽管我对这两种方法几乎没有经验。

将UIButton子类化绝对是危险的,因为UIButton不是一个类,而是一个类。我强烈建议不要这样做。苹果表示:

类集群体系结构涉及到简单性和可扩展性之间的权衡:使用几个公共类代替大量私有类可以更容易地在框架中学习和使用类,但在任何集群中创建子类都有点困难

在类群集中创建的新类必须:

-是集群抽象超类的子类

-声明自己的存储

-重写超类的基本方法


您可以使用getter和setter方法并向类别中添加getter和setter方法来模拟按钮上的属性,而不是向类别中添加属性。

子类化UIButton肯定是危险的,因为UIButton不是单个类,而是一个类。我强烈建议不要这样做。苹果表示:

类集群体系结构涉及到简单性和可扩展性之间的权衡:使用几个公共类代替大量私有类可以更容易地在框架中学习和使用类,但在任何集群中创建子类都有点困难

在类群集中创建的新类必须:

-是集群抽象超类的子类

-声明自己的存储

-重写超类的基本方法


您可以使用getter和setter方法来模拟按钮上的属性,而不是将属性添加到类别中。是的,我可以在vc中创建属性,但这并不能解决问题,因为我有48个按钮,每个按钮都要单独更改按钮pressedCounter,我不想按一个按钮,让计数器转到1,然后按另一个按钮,计数器转到2。我想能够按下一个按钮,让那个按钮的计数器变为1,然后当我按下另一个按钮时,那个按钮的计数器变为1。这就是为什么我想更改Sender的属性。您不必为每个要按下的按钮创建IBOutlet,只需创建48个属性即可。在您的情况下,我会创建48个整数的和数组,然后如果按下按钮25,您只需引用按钮PressedCounterarray[24]并增加该值。现在的问题是,你会有48次3个独特的动作发生,还是仍然只有3个独特的动作?再次检查我的答案,我编辑了另一个选项,我认为这对你最合适。我只是希望它们是UIButton中的内置属性,我可以使用,就像我知道UIButton中有一个选定状态一样,但这只会让我打开和关闭选择,我不会有3个选项只有2个我想为什么你认为这可能是危险的?老实说,这听起来是解决你问题的最直接的办法。至于UIButton类中内置的东西,我什么都不知道,尽管我可以很快地再次检查类引用。编辑:是的,我没有看到任何可以帮助你的内置功能。是的,我可以在我的vc中创建一个属性,但这不会解决问题,因为我有48个按钮,每个按钮我都想单独更改按钮按下计数器,我不想按一个按钮,让计数器转到1,然后按a