将字符串转换为IBOutlet UIButton对象名称
问题描述:
它们的标签由具有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这些工作,但什么?我需要改变这个工作?
答
在评论中看起来像是有一些针对你的指针,但我想知道你为什么以这种方式实现你的目标动作?也许有我不理解,但为什么不直接通过按钮作为参数传递给动作的接收程序的一部分:
- (IBAction)doStuffWithButton:(id)sender
{
if (sender.tag == 1)
{
[self actOnOne];
}
else if (sender.tag == 2)
{
....
}
}
就像我说的,这并不能回答你原来的问题,但也许不同的设计模式会让事情变得更容易?
[obj-c中字符串的变量名称]的可能重复(http://stackoverflow.com/questions/3164860/variable-name-from-string-in-obj-c) –
另请参见:[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和从那里链接的问题。 –