Iphone 将字符串分配给UIButton';s标记值
我想给Iphone 将字符串分配给UIButton';s标记值,iphone,ios,objective-c,uibutton,Iphone,Ios,Objective C,Uibutton,我想给UIButton标记一个字符串值以获得唯一标识。 我试过这个代码,但不起作用 NSString *A; NSString *B; NSString *C; NSString *D; firstOptionABtn.tag=[A integerValue]; secondOptonBbtn.tag=[B integerValue]; thirdOptionCbtn.tag=[C integerValue]; fourthOpt
UIButton
标记一个字符串值以获得唯一标识。
我试过这个代码,但不起作用
NSString *A;
NSString *B;
NSString *C;
NSString *D;
firstOptionABtn.tag=[A integerValue];
secondOptonBbtn.tag=[B integerValue];
thirdOptionCbtn.tag=[C integerValue];
fourthOptionDbtn.tag=[D integerValue];
- (IBAction)BtnClicked:(UIButton *)sender {
NSLog(@"%ld",(long)sender.tag);
}
我不喜欢这种方式,但每次都会打印0。我哪里做错了?
请帮忙。谢谢需要使用字符串来设置按钮的标记值。。。为什么不静态地设置按钮的标签,简单地设置如下:-
firstOptionABtn.tag=1;
第一次看到此设置标记,将字符串转换为int
在您的问题中,首先是您没有设置字符串的值
NSString *A;
NSString * B;
NSString * C;
NSString * D;
如果将字符串的值设置为
A=@"2"
然后,您的代码开始工作,并在按钮单击事件中获得值
firstOptionABtn.tag=[A integerValue];
它的产量是
发送者标签2
到你的字符串值考虑任何数字值,然后隐藏字符串到Tiger-Cube只编号,而不是字母字符,如
例如
如果将字符串值设置为A= @“2AAABB”,则按钮标签的输出为“强>2</强”,但如果设置字符串值为A= @“BB2AAABB”,则按钮标签的输出总是0考虑。
更新 如果要将字符设置为int 您可以将NSString转换为ASCII
,如下所示
A=@"A"
int ASCIINumber = [A characterAtIndex:0];
button.tag=ASCIINumber;
如果小写输出为97,则大写输出为:-65
但使用上述方法时,我建议您只使用set
tag=intNumber
而不使用上述方法。需要使用字符串来设置按钮的标记值。。。为什么不静态地设置按钮的标签,简单地设置如下:-
firstOptionABtn.tag=1;
第一次看到此设置标记,将字符串转换为int
在您的问题中,首先是您没有设置字符串的值
NSString *A;
NSString * B;
NSString * C;
NSString * D;
如果将字符串的值设置为
A=@"2"
然后,您的代码开始工作,并在按钮单击事件中获得值
firstOptionABtn.tag=[A integerValue];
它的产量是
发送者标签2
到你的字符串值考虑任何数字值,然后隐藏字符串到Tiger-Cube只编号,而不是字母字符,如
例如
如果将字符串值设置为A= @“2AAABB”,则按钮标签的输出为“强>2</强”,但如果设置字符串值为A= @“BB2AAABB”,则按钮标签的输出总是0考虑。
更新 如果要将字符设置为int 您可以将NSString转换为ASCII
,如下所示
A=@"A"
int ASCIINumber = [A characterAtIndex:0];
button.tag=ASCIINumber;
如果小写输出为97,则大写输出为:-65
但使用上述方法时,我建议您只使用set
tag=intNumber
而不使用上述方法。在标记中设置字符串是不可能的。正如您所说,标记只接受int值。不可能在标记中设置字符串。如您所知,标记只接受int值。创建一个自定义视图,该视图由UIButton
和NSString
属性或将用作标记的ivar组成
@interface MyButton: UIView
@property(nonatomic, strong) UIButton *button;
@property(nonatomic, strong) NSString *uniqueTag;
@end
希望有帮助 创建一个自定义视图,该视图由UIButton
和NSString
属性或将用作标记的ivar组成
@interface MyButton: UIView
@property(nonatomic, strong) UIButton *button;
@property(nonatomic, strong) NSString *uniqueTag;
@end
希望有帮助 它返回零,因为您并没有初始化字符串,当您将它转换为整数时,它有空值,它返回零。看起来您是从NIB创建按钮的,所以您可以从那里设置它们的标记值,然后通过实现来获得它们的值
-( IBAction )buttonClicked:(id)sender
{
UIButton *btn= (UIButton *)sender;
NSLog(@"%d",btn.tag);
}
但是如果你想要输出A,B,C,D,那么还有一种方法
-(void)viewDidLoad{
btn1.accessibilityLabel=@"A";
btn2.accessibilityLabel=@"B";
btn3.accessibilityLabel=@"C";
btn4.accessibilityLabel=@"D";
}
-(IBAction)buttonClicked:(id)sender {
UIButton *btn= (UIButton *)sender;
NSLog(@"%@",btn.accessibilityLabel);
}
输出是A、B、C、D它返回零,因为您没有初始化字符串,当您将其转换为整数时它有空值,它返回零。看起来您是从NIB创建按钮的,所以您可以从那里设置它们的标记值,然后通过实现来获得它们的值
-( IBAction )buttonClicked:(id)sender
{
UIButton *btn= (UIButton *)sender;
NSLog(@"%d",btn.tag);
}
但是如果你想要输出A,B,C,D,那么还有一种方法
-(void)viewDidLoad{
btn1.accessibilityLabel=@"A";
btn2.accessibilityLabel=@"B";
btn3.accessibilityLabel=@"C";
btn4.accessibilityLabel=@"D";
}
-(IBAction)buttonClicked:(id)sender {
UIButton *btn= (UIButton *)sender;
NSLog(@"%@",btn.accessibilityLabel);
}
输出为A、B、C、D我们可以在ui按钮
中为标记字符串创建一个类别
@interface UIButton (setTag)
@property(nonatomic, retain) NSString *tagString;
@end
您可以在文件中的任何位置将标记字符串设置为UIButton。
e、 g
我们可以在UIButton
中为标记字符串创建一个类别
@interface UIButton (setTag)
@property(nonatomic, retain) NSString *tagString;
@end
您可以在文件中的任何位置将标记字符串设置为UIButton。
e、 g
您始终可以创建一个自定义类,该类包含一个字符串属性,以便与所述类一起使用
例如:为UIButton创建自定义类
然后在头文件中放入:
@property (nonatomic, strong)NSString *labelTag;
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str;
然后,在实现时,创建一个带frame的init超级方法,如下所示:
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str{
self = [super initWithFrame:frame];
if (self) {
//Init code
_labelTag = str;
}
return self;
}
MyCustomButton *button = [[MyCustomButton alloc]initWithFrame:frame withLabelTag:@"this is the title"];
//and to call it :
NSLog (@"the button's tag is :%@", button.labelTag)
之后,无论何时您想要设置或调用按钮的字符串标记,您只需要声明它并按如下方式调用它:
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str{
self = [super initWithFrame:frame];
if (self) {
//Init code
_labelTag = str;
}
return self;
}
MyCustomButton *button = [[MyCustomButton alloc]initWithFrame:frame withLabelTag:@"this is the title"];
//and to call it :
NSLog (@"the button's tag is :%@", button.labelTag)
或者,您可以始终只使用按钮的标题属性,如果不希望它显示在按钮上,只需将其隐藏属性设置为“是”,您可以始终创建包含字符串属性的自定义类,以与所述类一起使用
例如:为UIButton创建自定义类
然后在头文件中放入:
@property (nonatomic, strong)NSString *labelTag;
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str;
然后,在实现时,创建一个带frame的init超级方法,如下所示:
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str{
self = [super initWithFrame:frame];
if (self) {
//Init code
_labelTag = str;
}
return self;
}
MyCustomButton *button = [[MyCustomButton alloc]initWithFrame:frame withLabelTag:@"this is the title"];
//and to call it :
NSLog (@"the button's tag is :%@", button.labelTag)
之后,无论何时您想要设置或调用按钮的字符串标记,您只需要声明它并按如下方式调用它:
- (id)initWithFrame:(CGRect)frame withLabelTag:(NSString *)str{
self = [super initWithFrame:frame];
if (self) {
//Init code
_labelTag = str;
}
return self;
}
MyCustomButton *button = [[MyCustomButton alloc]initWithFrame:frame withLabelTag:@"this is the title"];
//and to call it :
NSLog (@"the button's tag is :%@", button.labelTag)
或者,您可以始终只使用按钮的标题属性,如果不希望它显示在按钮上,只需将其隐藏属性设置为“是”有两种情况
案例1:如果标记字符串仅包含数字-(例如:tagStringValue=“1433”
)
使用myButton.tag=[tagStringValue intValue]代码>
用鼠标拿回按钮
UIButton *myButton = ([[self.view viewWithTag:[tagStringValue intValue]] isKindOfClass:[UIButton class]])?(UIButton *)[self.view viewWithTag:[tagStringValue intValue]]:nil;
案例2:如果标记字符串包含数字和字符串-(例如:tagStringValue=“ss1433kk”
)
对UIButton进行子类化,并添加如下属性:
@property(非原子,强)NSString*stringTag
并使用此标记代替默认的标记
有两种情况
案例1:如果您的标记字符串只包含数字-(例如:标记