0

プログラムのボタンが何回押されたかを知る必要があります。UIButtonボタンを押すたびにカテゴリを作成してプロパティを追加しようとしましたが、カテゴリにsender.someproperty++;プロパティを追加するとコンパイラが文句を言います。

これを追跡する方法はありますか?Xcode のすべてのオブジェクトにランダムunassigned integer propertyがあり、各オブジェクトを追跡するために異なる値をランダムに割り当てることができればいいのにと思います

最初にボタンを押すと何かが起こり、2 回目は何かが起こり、3 回目は何かが起こり、4 回目はデフォルトに設定されます。初めて押します。

4

2 に答える 2

2

あなたがしたいことは、ボタンがあるビューのView ControllerにbuttonPressedCounterプロパティを作成し、それを追跡することです。

変更機能については、buttonPressedCounter = 0、1、および 2 に対して定義し、その後、buttonPressedCounter = 2 の動作でカウンターをリセットするか、チェックは buttonPressedCounter % 3 に基づいている必要があります。

コメントのために編集: またできることは、UIButton を拡張する新しいクラスを作成し、その中でカウンター プロパティを宣言することだと思います。これはうまくいくはずであり、カウンター変数の配列よりも好みに合うかもしれません。

こんな感じかもしれませんが、

@interface UIButtonCountable : UIButton
{
    int _clickCounter;
}

@property (nonatomic) int clickCounter;

@end

もう 1 つのオプションは、UIButton を使用せずに、3 つの可能な値を持つスライダー、またはセグメント化されたコントロールのいずれかを使用することです。ただし、これらの経験はほとんどまたはまったくありません。

于 2012-07-13T17:28:14.200 に答える
1

UIButton は単一のクラスではなくクラス クラスターであるため、UIButton のサブクラス化は間違いなく危険です。これを行わないことを強くお勧めします。アップルによると:

クラス クラスタ アーキテクチャには、シンプルさと拡張性のトレードオフが伴います。いくつかのパブリック クラスを多数のプライベート クラスの代わりにすることで、フレームワーク内でクラスを学習して使用することが容易になりますが、クラスタ内でサブクラスを作成するのはやや難しくなります。 .

クラス クラスタ内に作成する新しいクラスは、次の条件を満たす必要があります。

- クラスターの抽象スーパークラスのサブクラスであること

-独自のストレージを宣言する

- スーパークラスのプリミティブ メソッドをオーバーライドする

カテゴリにプロパティを追加する代わりに、連想参照を使用して getter メソッドと setter メソッドをカテゴリに追加し、ボタンのプロパティをシミュレートできます。

于 2012-07-13T18:34:07.873 に答える