2011-12-04 94 views
0

它們的標籤由具有7段的UISegmentedControl驅動的函數改變了24個按鈕。還有一個UIPickerView有9個不同的對象。這兩個動態地改變按鈕的標籤。然後,當按下按鈕時,我必須知道所選的UIPickerView對象,UISegmentedControl選項和哪個按鈕。將字符串轉換爲IBOutlet UIButton對象名稱

我的接收和執行功能是這樣的:

- (int)ButtonPlayController:(int)buttonPressed { 

    NSString *button = [NSString stringWithFormat:@"%@%i", @"button", buttonPressed]; 

    if (button.titleLabel.text == @"1C") { 

     [self Play1C]; 

    } 

    else if ..... 

} 

的函數接收數(按鈕數目),並結合了字符串名稱來創建UIButton名,例如如果函數接收數字8則UIButton名字是button8(我已經在我的.h文件:IBOutlet UIButton *button8;

我記得對象C的PHP這些工作,但什麼?我需要改變這個工作?

+0

[obj-c中字符串的變量名稱]的可能重複(http://stackoverflow.com/questions/3164860/variable-name-from-string-in-obj-c) –

+0

另請參見:[Obj-C相當於PHP的「變量變量」](http://stackoverflow.com/questions/2283374/objective-c-equivalent-of-phps-variable-variables)。此外還:http://stackoverflow.com/questions/8090590/is-this-possible-to-call-variable-dynamically-in-objective-c和從那裏鏈接的問題。 –

回答

0

在評論中看起來像是有一些針對你的指針,但我想知道你爲什麼以這種方式實現你的目標動作?也許有我不理解,但爲什麼不直接通過按鈕作爲參數傳遞給動作的接收程序的一部分:

- (IBAction)doStuffWithButton:(id)sender 
{ 
    if (sender.tag == 1) 
    { 
     [self actOnOne]; 
    } 
    else if (sender.tag == 2) 
    { 
     .... 
    } 
} 

就像我說的,這並不能回答你原來的問題,但也許不同的設計模式會讓事情變得更容易?

+0

我的問題是,按鈕的標籤從另一個功能動態變化。 好的,讓我充分解釋一下。有24個按鈕,它們的標籤由具有7段的UISegmentedControl驅動的函數改變。還有一個UIPickerView有9個不同的對象。 – castbin

+0

這兩個動態地改變按鈕的標籤。然後,當按下按鈕時,我必須知道所選的UIPickerView對象,UISegmentedControl選項和哪個按鈕。 – castbin

+0

我使用了標籤+標籤名稱的組合!謝謝! – castbin