我正在我的uiactionsheet中实现Uiswitch,我已成功将它放置在我想要的位置,但无法使用它。这是我的代码:
switchButton = [[UISwitch alloc] init];
[mySheet addSubview:switchButton];
[mySheet showInView:self.view];
UILabel *instruction = [[UILabel alloc] init];
[instruction setBackgroundColor:[UIColor clearColor]];
[instruction setText:@"Daily"];
[mySheet addSubview:instruction];
// get the dimension of the sheet to position the switch
CGSize parentSize = mySheet.frame.size;
CGRect rect = switchButton.frame;
rect.origin.x = parentSize.width/2.0 - rect.size.width + 90;
rect.origin.y = parentSize.height - rect.size.height + 90 ;
switchButton.frame = rect;
//get the dimension of the sheet to possition the label
rect.origin.x = parentSize.width/2.0 - rect.size.width -20;
rect.origin.y = parentSize.height - rect.size.height + 90 ;
instruction.frame = rect;
我已将我的开关按钮初始化为iboutlet。在动作表的功能中,我正在尝试这样做。
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex: (NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
{
NSLog(@"Yes Button is working");
}
break;
case 1:
{
if(switchButton.on){
NSLog(@"IS on ?");
}
else {
NSLog(@"Is off?");
}
}
default:
break;
}
** IMP我也试过更多的东西,我为它制作了“ - (ibAction)功能”,但是当我这样做时,我无法将它与我的开关联系起来**
答案 0 :(得分:1)
以下代码将有所帮助
switchButton = [[UISwitch alloc] init];
[switchButton addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];
答案 1 :(得分:0)
将其设置为IBOutlet将不会执行任何操作,因为您是以编程方式创建交换机的。真的,您应该创建自己的UIViewController(并在Interface Builder中设计),您可以模态显示,而不是使用专为简单按钮选择而设计的UIActionSheet。
但是,如果您继续使用UIActionSheet,则可以在创建UISwitch时为其调用'addTarget',以便在更改开关时捕获事件。
答案 2 :(得分:0)
在将子视图添加到UIActionSheet之前,您还可以为UISwitch视图设置标记值(例如6)。然后,当方法clickedButtonAtIndex
被触发时,您可以使用[(UISwitch *)[actionSheet viewWithTag:6] isChecked]
答案 3 :(得分:0)
你可以有一个BOOL标志,可以设置UISwitch
[mySwitch addTarget:self action:@selector(switchChanged) forControlEvents: UIControlEventTouchUpInside];
-(void)switchChanged{
if(switchOn){
switchOn=NO;
}
else {
switch=YES;
}
}
在ActionSheet
中,您可以查看标记swithcOn