【问题标题】:UISwitch in iosios中的UISwitch
【发布时间】:2013-08-23 08:19:45
【问题描述】:

在 ViewDidLoad 中

{
     NSLog(@"Switch Value %d",delegate.switchvalue);

    if(delegate.switchvalue==1)
    {
        [onoffswitch setOn:YES];
    }
    else
    {
        [onoffswitch setOn:NO];
    }

}

在设计方面,

 onoffswitch=[[UISwitch alloc]initWithFrame:(CGRectMake(200, 8, 50, 33))];
    [onoffswitch addTarget:self action: @selector(flip:) forControlEvents:UIControlEventValueChanged];
   // [onoffswitch setOn:YES];

在切换方法中,

-(IBAction)flip:(id)sender


{

    if([sender isOn])
    {
        [onoffswitch setTag:1];
        NSLog(@"%d",[sender tag]);
        delegate.switchvalue=[sender tag];
        NSLog(@"%d",delegate.switchvalue);


        NSLog(@"ON");

        NSTimer *BirthTimer=[NSTimer scheduledTimerWithTimeInterval:86400.0 target:self selector:@selector(TimerTapped:) userInfo:nil repeats:YES];

        [BirthTimer fire];
    }
    else
    {
        NSLog(@"OFF");

    }
}

我的问题是,我将开关模式设置为 ON。如果我转到另一个视图,则再次更改为关闭模式。 任何想法请帮助我。

感谢您的帮助。

使用 NSUserDefaults

-(IBAction)flip:(id)sender

{

[onoffswitch setTag:1];
delegate.switchvalue=[sender tag];
NSLog(@"%d",delegate.switchvalue);

if([sender isOn])
{

    NSLog(@"ON");
    isAlarm=1;
    NSLog(@"%d",isAlarm);

    NSUserDefaults *switchdefault=[NSUserDefaults standardUserDefaults];
    [[NSUserDefaults standardUserDefaults]synchronize];
    [switchdefault setInteger:delegate.switchvalue forKey:@"Switchcontrol"];
    [switchdefault setBool:YES forKey:@"SwitchBool"];
    [switchdefault synchronize];


    NSTimer *BirthTimer=[NSTimer scheduledTimerWithTimeInterval:86400.0 target:self selector:@selector(TimerTapped:) userInfo:nil repeats:YES];

    [BirthTimer fire];
}
else
{
    NSLog(@"OFF");
    isAlarm=0;
    NSLog(@"%d",isAlarm);


}

}

在视图中会出现

NSUserDefaults *switchdefault=[NSUserDefaults standardUserDefaults];

if([switchdefault boolForKey:@"SwitchBool"])
{
    [onoffswitch setOn:YES animated:YES];
}
else
{
    [onoffswitch setOn:YES animated:YES];
}

在另一个视图的 ViewDidLoad 中

NSUserDefaults *switchdefault=[NSUserDefaults standardUserDefaults];

if ([switchdefault boolForKey:@"SwitchBool"])
{
    delegate.switchvalue=1;
}
[switchdefault synchronize];

【问题讨论】:

    标签: ios


    【解决方案1】:

    使用NSSUserDefault 存储开关按钮的状态,然后在将其添加到视图时再次从同一位置检索它...

    切换ON后存储1,OFF模式存储0。

    [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"values"];
    

    然后像这样拿回来,

    NSInteger mode = [[NSUserDefaults standardUserDefaults] integerForKey:@"values"];
    

    注意:建议您在ViewWillAppear/ViewDidAppear中添加切换按钮。

    【讨论】:

    • 我在表格视图中附加了切换按钮。
    • 然后按照我在上面的答案中所说的做,伙计..你现在面临什么问题?
    【解决方案2】:

    如果您希望每次视图出现时都将开关设置为delegate.switchValue,请尝试将此代码从 viewDidLoad 移动到 viewDidAppear:

    -(void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        if(delegate.switchvalue==1) 
        {
            [onoffswitch setOn:YES];
        }
        else
        {
            [onoffswitch setOn:NO];
        }
    }
    

    【讨论】:

    • @rajesh - 好的,这里有什么问题?你的 NSLog for switchValue 打印出正确的值吗?
    • @rajesh - 请回答我的问题。您的日志是否打印出预期值?我从来没有问过断点或 if 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多