2011-12-04 4 views
0

7つのセグメントを持つUISegmentedControlによって駆動される関数からラベルが変更される24個のボタンがあります。 9つの異なるオブジェクトを持つUIPickerViewもあります。これらの2つは、ボタンのラベルを動的に変更します。次に、ボタンが押されると、選択されたUIPickerViewオブジェクト、UISegmentedControlの選択、およびどのボタンがこれであるかを知る必要があります。関数は、例えば、番号(ボタン番号)を受信し、UIButton名を作成する文字列名を組み合わせ文字列をIBOutlet UIButtonオブジェクト名に変換する

- (int)ButtonPlayController:(int)buttonPressed { 

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

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

     [self Play1C]; 

    } 

    else if ..... 

} 

:受信し、実行

My機能はこれです関数は、数8を受信した場合、その後UIButton名前はbutton8です(私はすでに私の.hファイルで持っている:IBOutlet UIButton *button8;

私はPHPでこれらの作業を覚えているが、どのようなオブジェクトCはどうですか?これが機能するためには何を変えなければならないのですか?

+0

[変数名from 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

私の問題は、ボタンのラベルが別の機能から動的に変わるということです。 よろしくお願いします。ラベルが7つのセグメントを持つUISegmentedControlによって駆動される関数から変化する24個のボタンがあります。 9つの異なるオブジェクトを持つUIPickerViewもあります。 – castbin

+0

これらの2つは、ボタンのラベルを動的に変更します。次に、ボタンが押されると、選択されたUIPickerViewオブジェクト、UISegmentedControlの選択、およびどのボタンがこれであるかを知る必要があります。 – castbin

+0

タグ+ラベル名の組み合わせを使用しました!ありがとうございました! – castbin