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:如果您的标记字符串只包含数字-(例如:
标记