可能重复:
Handling multiple UISwitch controls in a table view without using tag property
我想问一下如何在一个UIview上配置7个UISwitch?我使用界面构建器放置开关,然后我想通过代码管理它们。管理这个的最好方法是什么。到目前为止,这是我的.h
#import <UIKit/UIKit.h>
@interface searchEditViewController : UIViewController{
UISwitch *switchOne;
UISwitch *switchTwo;
UISwitch *switchFor;
UISwitch *switchFive;
UISwitch *switchSix;
UISwitch *switchSeven;
}
@property(nonatomic,retain)UISwitch *switchOne;
@property(nonatomic,retain)UISwitch *switchTwo;
@property(nonatomic,retain)UISwitch *switchThree;
@property(nonatomic,retain)UISwitch *switchFour;
@property(nonatomic,retain)UISwitch *switchFive;
@property(nonatomic,retain)UISwitch *switchSix;
@property(nonatomic,retain)UISwitch *switchSeven;
-(IBAction)toggleButtonPressed:(id)sender;
@end
我想制作一个动作方法toggleButtonPressed,它将照顾其中的七个
答案 0 :(得分:3)
为所有UISwitch
个对象创建一个操作(我猜这是toggleButtonPressed
)。现在,您可以在此方法中了解触发了哪个UISwitch:
-(IBAction)toggleButtonPressed:(id)sender{
UISwitch *switchObj = (UISwitch*)sender;
if (switchObj == self.switchOne){
// do stuff
}
if (switchObj == self.switchTwo){
// do stuff
}
// switch(switchObj.tag){
// case 1:
// // do stuff
// break;
// case 2:
// // do stuff
// break;
// }
}
编辑。您可以将tag
属性设置为某个值(从1到7),并将if-statement
更改为switch-case
。
答案 1 :(得分:1)
@beryllium,你的方式确实有效,但你可能想尝试一些更优雅的东西。
相反,标记每个开关,然后标记if-then然后使用switch-case,因为您似乎已注释掉了。
以下是一个示例,请注意kUIActivityIndicatorViewStyleWhiteLarge实际上是我创建的常量并赋值#define kUIActivityIndicatorViewStyleWhiteLarge 1
- (IBAction)setSpinnerType:(UISwitch *)sender
{
// switch based on tag value
// turn other two switches off
switch (sender.tag) {
case kUIActivityIndicatorViewStyleWhiteLarge:
self.spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
[sender setOn:YES animated:YES];
[self.whiteSwitch setOn:NO animated:YES];
[self.graySwitch setOn:NO animated:YES];
break;
case kUIActivityIndicatorViewStyleWhite:
self.spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
[self.whiteLargeSwitch setOn:NO animated:YES];
[sender setOn:YES animated:YES];
[self.graySwitch setOn:NO animated:YES];
break;
case kUIActivityIndicatorViewStyleGray:
self.spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[self.whiteLargeSwitch setOn:NO animated:YES];
[self.whiteSwitch setOn:NO animated:YES];
[sender setOn:YES animated:YES];
break;
default:
break;
}
}
如果你想按自己的方式去做,那没关系,但再次不那么理想。但是,如果你这样做,代码:
UISwitch *switchObj = (UISwitch*)sender;
if (switchObj == self.switchOne){
是多余的。相反,你可以写下以下内容:
-(IBAction)toggleButtonPressed:(UISwitch *)sender{
// UISwitch *switchObj = (UISwitch*)sender;
if (sender == self.switchOne){
// do stuff
}
我希望有所帮助。
我创建了一个应用程序来测试不同颜色背景下的UIActivityIndicatorView样式,它使用滑块和开关。如果有人想看到带有IB组件的应用程序,请在此处输入网址:
https://github.com/asadquraishi/UIActivityIndicatorView-Test