Cra*_*Dev 36 xcode objective-c button ibaction ios
在我的项目中我必须控制40个按钮的动作,但我不想创建40个IBAction,我可以只使用IBAction,怎么样?
Joh*_*ker 56
如果您使用界面构建器来创建按钮,只需将它们指向相关类中的相同IBAction即可.
然后,您可以通过阅读按钮中的文本来区分IBAction方法中的按钮...
- (IBAction)buttonClicked:(id)sender {
NSLog(@"Button pressed: %@", [sender currentTitle]);
}
Run Code Online (Sandbox Code Playgroud)
...或者通过tag在Xcode中设置属性并通过它回读[sender tag].(如果使用此方法,则将标记设置为1,因为0是默认值,因此几乎没有用处.)
Big*_*ump 12
-(IBAction)myButtonAction:(id)sender {
if ([sender tag] == 0) {
// do something here
}
if ([sender tag] == 1) {
// Do something here
}
}
// in Other words
-(IBAction)myButtonAction:(id)sender {
switch ([sender tag]) {
case 0:
// Do something here
break;
case 1:
// Do something here
break;
default:
NSLog(@"Default Message here");
break;
}
Run Code Online (Sandbox Code Playgroud)
设置所有按钮以使用该操作.动作通常有一个sender参数,您可以使用该参数来确定哪个按钮正在调用该动作.告诉按钮之间区别的一种流行方法是为每个按钮的tag属性分配不同的值.因此,您可能有40个按钮,标签范围从1到40.(0可能不是标签的绝佳选择,因为这是默认值,并且您忘记设置标签的任何按钮将具有0作为标签值.)
当所有按钮执行大致相同的操作(如计算器或键盘上的按钮)时,此技术非常有用.如果每个按钮都做了完全不同的事情,那么你最终仍然会使用相当于40个方法,但是你可以用自己的switch语句替换Objective-C的消息传递系统.在这种情况下,通常最好只花时间创建所需的动作,并根据需要适当地分配它们.