0

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

有什么办法可以跟踪这个吗?我希望 Xcode 中的每个对象都有一个随机unassigned integer property的,你可以随机分配不同的值来跟踪每个对象

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

4

2 回答 2

2

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

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

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

可能看起来像这样

@interface UIButtonCountable : UIButton
{
    int _clickCounter;
}

@property (nonatomic) int clickCounter;

@end

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

于 2012-07-13T17:28:14.200 回答
1

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

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

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

- 成为集群抽象超类的子类

- 声明自己的存储

- 覆盖超类的原始方法

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

于 2012-07-13T18:34:07.873 回答