2014-11-24 47 views
0

我需要傳遞帶有按鈕的字符串數據,比如標籤,我該怎麼做?將字符串作爲標籤或其他值傳遞給按鈕

[button setTag:tg]; 

tg是nsstring。也許使用其他財產,而不是標籤?

+0

是在tableview中的按鈕?然後看看[這個答案](http://stackoverflow.com/questions/5246768/passing-arguments-to-selector-method/5246835#5246835) – 2014-11-24 07:46:02

+0

你可以請提一下這種情況,爲什麼你要添加字符串值標籤屬性?我想更好的方法是將我的價值傳遞給像UITouchUpInside這樣的特定事件方法。請提供更多描述。 – Mrunal 2014-11-24 07:54:46

回答

5

使用Associated Objects

@interface UIButton (Tagged) 

@property (nonatomic, copy) NSString *tag; 

@end 

#import <objc/runtime.h> 

static const void *tagKey = &tagKey; 

@implementation UIButton (Tagged) 

- (void)setTag:(NSSting *)tag 
{ 
    objc_setAssociatedObject(self, tagKey, tag, OBJC_ASSOCIATION_COPY_NONATOMIC); 
} 

- (NSString *)tag 
{ 
    return objc_getAssociatedObject(self, tagKey); 
} 
@end 

獲取參考associated-objectslink

0

你不能設置NSString變量整數屬性,它是不可能在Objective-C(如果它是一個對象,在技術上你可以,但你在這裏處理一個原語)。

您可以在Objective-C運行時使用關聯的屬性。您可以使用此API將任何其他變量設置爲任何對象,然後稍後再檢索它。有關更多信息,請參閱下面的鏈接。

http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with-associative-references/

方法objc_setAssociatedObject是你正在尋找的人。

相關問題