重複の可能性:
UIButton をサブクラス化してプロパティを追加する
次のようなプロパティを持つことができるように UIButton を拡張する方法を見つけようとしています
@property(assign, nonatomic) id userInfos;
サブクラス化せずに...
これは可能ですか?
私のbutton.tag
状況では十分ではありません...
いつもより良い答えがここにあります
重複の可能性:
UIButton をサブクラス化してプロパティを追加する
次のようなプロパティを持つことができるように UIButton を拡張する方法を見つけようとしています
@property(assign, nonatomic) id userInfos;
サブクラス化せずに...
これは可能ですか?
私のbutton.tag
状況では十分ではありません...
いつもより良い答えがここにあります
これは、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
それでおしまい!
Objective-cランタイムの関連オブジェクト関数を使用して、オブジェクトを別のオブジェクトに関連付けることができます。
void objc_setAssociatedObject(idオブジェクト、void * key、id値、objc_AssociationPolicyポリシー)
id objc_getAssociatedObject(idオブジェクト、void * key)
また、投票を締め切ります。複製:
カテゴリ拡張を介してNSMutableArrayにプロパティを追加するにはどうすればよいですか?
他の多くの中で。
編集:
@Paul.sによるあなたの質問へのコメントにも同意します。ボタンにデータを添付するのは面倒に聞こえます。何をしているのかわからない場合は、ボタンにタグを付けてから、ボタンのタグに基づいて必要なデータを取得するようにViewControllerに処理させることをお勧めします。
必要なのは、UIButtonカテゴリを作成することです。カテゴリは、既存のクラスの機能を拡張する方法として設計されています。セットアップを作成したら、カテゴリをインポートするだけで、設計されたクラスの任意のインスタンスでその関数を使用できます。