2011-12-04 64 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