1

UIButtonクラスに.ownerメソッドと.numberメソッドを追加しようとしています。ボタンを区切るために番号を使用できるように、個々の番号に(int)番号を割り当てる必要があります。

例えば、私が書くことができbuttonName.number = 1buttonName.owner = @"Player1";

どうすればこれを行うことができますか?

4

1 に答える 1

2

これを行う方法はいくつかあります。より簡単な方法は、UIButtonクラスをサブクラス化し、必要に応じてプロパティを追加することです。これは、次のように実現できます。

@interface MyButton:UIButton
@property(nonatomic, assign) int number;
@property(nonatomic, strong) NSString *owner
@end

もう1つの方法は、ランタイムを使用してプロパティをクラスに追加することです。このためには、クラスのカテゴリを作成してから、インターフェイスにプロパティを追加し、ランタイムを使用してプロパティを追加します。

@interface UIButton(MyCategory)
@property(nonatomic, assign) float number;
@property(nonatomic, strong) NSString *owner;
@end

@implementation UIButton(MYCategory)
NSString *const numberKey = @"kNumberKey";
NSString *const ownerKey = @"kOwnerKey";

 - (float)number{ 
    return [objc_getAssociatedObject(self, &numberKey) floatValue]; 
 } 

-(void)setNumber:(float)num{ 
  objc_setAssociatedObject(self, &numberKey,[NSNumber numberWithFloat:num], OBJC_ASSOCIATION_RETAIN_NONATOMIC); 
}

-(NSString*)owner{
    return objc_getAssociatedObject(self, &ownerKey);
}

-(void)setOwner:(NSString *)own{
    objc_setAssociatedObject(self, &ownerKey, own, OBJC_ASSOCIATION_COPY);
}

@end

これにより、UIButtonクラス自体にカスタムプロパティを追加できるようになります。

于 2012-11-23T23:04:10.860 に答える