-3

重複の可能性:
UIButton をサブクラス化してプロパティを追加する

次のようなプロパティを持つことができるように UIButton を拡張する方法を見つけようとしています

@property(assign, nonatomic) id userInfos;

サブクラス化せずに...

これは可能ですか?

私のbutton.tag状況では十分ではありません...

いつもより良い答えがここにあります

UIButton をサブクラス化してプロパティを追加する

4

3 に答える 3

2

これは、Objective-C関連オブジェクトを使用すると非常に簡単です。

ヘッダー内:

@interface UIButton (MyCustomProperty)
@property (readwrite, retain, nonatomic) id myCustomProperty;
@end

実装ファイル:

#include <objc/runtime.h>

/* Associated objects need a unique memory location to use as a key. */
static char MyCustomPropertyKey = 0;

@implementation UIButton (MyCustomProperty)
/* Use @dynamic to tell the compiler you're handling the accessors yourself. */
@dynamic myCustomProperty;

- (id)myCustomProperty {
    return objc_getAssociatedObject(self, &MyCustomPropertyKey);
}

- (void)setMyCustomProperty: (id)anObject {
    objc_setAssociatedObject(self, &MyCustomPropertyKey, anObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end

それでおしまい!

于 2013-01-04T21:38:55.360 に答える
0

Objective-cランタイムの関連オブジェクト関数を使用して、オブジェクトを別のオブジェクトに関連付けることができます。

void objc_setAssociatedObject(idオブジェクト、void * key、id値、objc_AssociationPolicyポリシー)

id objc_getAssociatedObject(idオブジェクト、void * key)

また、投票を締め切ります。複製:

カテゴリ拡張を介してNSMutableArrayにプロパティを追加するにはどうすればよいですか?

すべてのクラスにカスタムの動作と状態を追加する

他の多くの中で。

編集:

@Paul.sによるあなたの質問へのコメントにも同意します。ボタンにデータを添付するのは面倒に聞こえます。何をしているのかわからない場合は、ボタンにタグを付けてから、ボタンのタグに基づいて必要なデータを取得するようにViewControllerに処理させることをお勧めします。

于 2013-01-04T21:38:46.967 に答える
0

必要なのは、UIButtonカテゴリを作成することです。カテゴリは、既存のクラスの機能を拡張する方法として設計されています。セットアップを作成したら、カテゴリをインポートするだけで、設計されたクラスの任意のインスタンスでその関数を使用できます。

于 2013-01-04T21:41:27.750 に答える