0

我正在我的 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)funct”的东西,但是当我这样做时,我无法将它与我的开关链接起来 **

4

4 回答 4

1

以下代码将有所帮助

switchButton = [[UISwitch alloc] init];

[switchButton addTarget:self action:@selector(setState:) forControlEvents:UIControlEventTouchUpInside];
于 2013-03-19T14:43:11.680 回答
0

将其设置为 IBOutlet 不会做任何事情,因为您正在以编程方式创建开关。确实,您应该创建自己的 UIViewController(并在 Interface Builder 中设计它)以模态方式显示,而不是使用为简单按钮选择而设计的 UIActionSheet。

但是,如果您确实继续使用 UIActionSheet,您可以在创建 UISwitch 时调用它的“addTarget”以在开关更改时捕获事件。

于 2013-03-19T14:39:05.593 回答
0

在将子视图添加到 UIActionSheet 之前,您还可以为 UISwitch 视图设置标签值(例如 6)。然后,当该方法clickedButtonAtIndex被触发时,您可以使用[(UISwitch *)[actionSheet viewWithTag:6] isChecked]

于 2013-03-19T14:47:18.387 回答
0

您可以有一个 BOOL 标志,它可以设置UISwitch

[mySwitch addTarget:self action:@selector(switchChanged) forControlEvents: UIControlEventTouchUpInside];
-(void)switchChanged{
    if(switchOn){
     switchOn=NO;
   }
   else {
     switch=YES;
   }
}

ActionSheet你可以检查标志swithcOn

于 2013-03-19T14:49:59.990 回答