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

时间:2012-07-13 17:24:29

标签: objective-c ios xcode uibutton

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

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

我第一次按下按钮时,我想要发生一些事情,第二次,我想要其他事情发生,第三次,我想要其他事情发生,然后第四次我想要它默认所以就像我第一次按下它一样。

2 个答案:

答案 0 :(得分:2)

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

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

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

可能看起来像这样,

@interface UIButtonCountable : UIButton
{
    int _clickCounter;
}

@property (nonatomic) int clickCounter;

@end

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

答案 1 :(得分:1)

UIButton的子类化绝对是危险的,因为UIButton不是单个类而是class cluster。我强烈建议不要这样做。根据Apple的说法:

  

类集群体系结构涉及简单性和可扩展性之间的权衡:有一些公共类代表大量私有类,这使得在框架中学习和使用类更容易,但在任何类中创建子类更难群集。

     

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

     

- 是集群抽象超类

的子类      

-Declare自己的存储空间

     

- 取消超类的原始方法

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