[英]How do I get the name from a UIButton?
我是xcode的新手,我正在嘗試制作一種通用的按鈕按下方法。 我希望它檢查按鈕的名稱(而不是標題),然后我要執行一些字符串操作以設置一些值。
我在ViewController.h中有一個按鈕設置
@property (strong, nonatomic) IBOutlet UIButton *button_1_3;
然后我的ViewController.m中有一個通用方法
- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
self.char1Text1.text = bSender.titleLabel.text; // this is the bit that I am not getting
}
因此,我的許多按鈕上都將帶有相同的文本,我想看到的是“ button_1_3”。 我希望有一個“ bSender.name”選項,但我還沒有找到。
任何幫助,將不勝感激
給您的所有按鈕的標簽(這也可以在Interface Builder中完成)
button_1_0.tag = 0;
button_1_1.tag = 1;
button_1_2.tag = 2;
button_1_3.tag = 3;
在您的buttonPress:
方法中檢查tag
並顯示其他文本
- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
switch (bSender.tag) {
case 0:
self.char1Text1.text = @"first text";
break;
case 1:
self.char1Text1.text = @"second text";
break;
case 2:
self.char1Text1.text = @"thrid text";
break;
case 3:
self.char1Text1.text = @"fourth text";
break;
default:
break;
}
}
變量名可以方便您進行開發,但在編譯應用程序時不會保留。
您需要在按鈕及其名稱之間創建映射。 一種簡單的實現方法是為每個按鈕分配一個tag
,然后在標簽和名稱之間創建映射。 然后,您可以通過_tagNameMapping[@(sender.tag)];
獲得名稱_tagNameMapping[@(sender.tag)];
。
此外,由於標簽是數字的,因此可以選擇switch(sender.tag)
並確定邏輯。
只需調用下面的方法,它將為您提供所需的信息:
- (IBAction)buttonPress:(id)sender
{
NSString* str1 = [sender titleForState:UIControlStateNormal];
NSLog(@"%@", str1);
}
- (IBAction)buttonPress:(id)sender
{
UIButton *bSender = (UIButton *)sender;
//uh, and don't forget to set button's outlet or it won't work
if(bSender==self.button_1_3){
//button pressed is button_1_3..do manipulation for that button.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.