簡體   English   中英

如何從UIButton獲得名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM