美文网首页RxSwift学习
UISwitch的使用(RAC中)

UISwitch的使用(RAC中)

作者: 小胖子2号 | 来源:发表于2017-09-01 14:13 被阅读689次

一、UISwithch的简单实用

其实主要就是控制switch的开关


1.png

第一种:点击开关会改变状态

1.在cell里进行拖线后

@property (weak, nonatomic) IBOutlet UISwitch *XJPSwitch;

备注:监听switch开关的状态的方法

RAC有提供一个方法,当UISwitch 状态发生改变的时候 会触发这个方法,所以要订阅这个开关状态改变的信号

 XJPTableViewCellStyleValue2 *cell = [tableView dequeueReusableCellWithIdentifier:@"XJPTableViewCellStyleValue2"];

 [[cell.XJPSwitch rac_newOnChannel] subscribeNext:^(id value) {
            NSLog(@"--------------%@",value);  // value就是开关的值
            BOOL flag = [value boolValue];

2. 使用场景

场景:当这个开关改变时,另一个界面的按钮根据开关的状态隐藏或显示(关,按钮隐藏; 开,按钮打开)

  1. 控制UISwitch控件的初始状态
 if ([XJPUserNameModel shardUserModel].SwitchValue) {
            [cell.XJPSwitch setOn:YES];
        } else {
            [cell.XJPSwitch setOn:NO];
        }
  1. 保存按钮开关状态
    数据的持久化存储,因在项目中方便,此处随着项目中的其他数据,直接采用了归档方式,其实采用NSUserDefault更好。关于数据持久化存储的选择方式可参考jianshu

代码如下:

        [[cell.XJPSwitch rac_newOnChannel] subscribeNext:^(id value) {
            NSLog(@"--------------%@",value);
            BOOL flag = [value boolValue];

            [XJPUserNameModel shardUserModel].SwitchValue = flag;
            [XJPUserNameModel saveDataToKeyChian];
            //  NSLog(@"-------22222222---%@",[XJPUserNameModel shardUserModel].SwitchValue);
                
        }];
        return cell;

第二种:点击开关,不会改变状态,只有验证通过后,才会改变状态

1.同上,但会增加监听点击的方法,控制按钮被点击后状态不变

-(void)awakeFromNib
{
    [super awakeFromNib];
    
    [self.XJPSwitch addTarget:self action:@selector(switchClick:) forControlEvents:UIControlEventTouchUpInside];
    self.selectionStyle = UITableViewCellSelectionStyleNone;
    self.textLabel.font = [UIFont systemFontOfSize:14];
    self.textLabel.textColor = [UIColor colorWithHexString:@"333333"];
    
}

- (void)switchClick:(UISwitch * )sender {
    [sender setOn: !sender.isOn];
}

2.使用场景:验证成功后才会打开或则关闭

  1. 控制UISwitch控件 的初始状态;
    2.当UISwitch 状态发生改变的时候, 订阅这个开关状态改变的信号
    3.监听值的改变,确定开关的状态
    XJPTableViewCellStyleValue21 *cell = [tableView dequeueReusableCellWithIdentifier:@"XJPTableViewCellStyleValue21"];
    
    //1.控制UISwitch控件 的初始状态;
    if ([[XJPUserNameModel shardUserModel].isopenfree isEqualToString:@"00"]) { // 未开通
        [cell.XJPSwitch setOn:NO];
    }
    else  if ([[XJPUserNameModel shardUserModel].isopenfree isEqualToString:@"01"])  // 已开通
    {
        [cell.XJPSwitch setOn:YES];
    }
    NSLog(@"小额免密:%@",[XJPUserNameModel shardUserModel].isopenfree);
    @weakify(self)

     //2.开关被点击,触发这个方法;
    [[cell.XJPSwitch rac_newOnChannel] subscribeNext:^(id x) {
        @strongify(self)
        [self.viewModel.nextCommand execute:nil];
    }];
    
     //3.监听值的改变 ,设置开关的状态
    [RACObserve([XJPUserNameModel shardUserModel], isopenfree) subscribeNext:^(id  _Nullable x) {
        if ([x isEqualToString:@"00"]) { // 未开通
            [cell.XJPSwitch setOn:NO];
        }
        else  if ([x isEqualToString:@"01"])  // 已开通
        {
            [cell.XJPSwitch setOn:YES];
        }
    }];
    return cell;

相关文章

  • UISwitch的使用(RAC中)

    一、UISwithch的简单实用 其实主要就是控制switch的开关 第一种:点击开关会改变状态 1.在cell里...

  • 25-Swift 之UISwitch

    一、UISwitch 开关的介绍 UISwitch 开关在App的开发中,开关的使用也很广泛。主要是控制某个功能的...

  • 使用UISwitch重复调用UIControlEventValu

    1.UISwitch的问题 UISwitch通常这样使用: 监听UIControlEventValueChange...

  • swift UISwitch 详解

    UISwitch 的详细使用 代码如下: let switch = UISwitch() switch.frame...

  • swift中UISwitch的使用

    UISwitch的使用

  • IOS RAC实践

    前言 RAC使用-->IOS RAC使用 -- ReactiveObjC 本文使用RAC+MVVM来模拟用户登录 ...

  • RAC iOS

    使用RAC 1.target-action RAC最基本的入门使用技巧就是对事件的监听。 PS:在iOS开发中,我...

  • ReactiveCocoa详解

    一、RAC介绍 RAC 是一个 iOS 中的函数式响应式编程框架,一般与MVVM配套使用。在非RAC开发中,都是习...

  • RAC(ReactiveCocoa)使用方法(一)

    RAC(ReactiveCocoa)使用方法(一)RAC(ReactiveCocoa)使用方法(二) 什么是RAC...

  • RAC使用

    RAC常用宏 KVO监听使用 RAC宏使用 信号类使用 使用信号模拟代理 rac_sequence遍历字典 解包元...

网友评论

    本文标题:UISwitch的使用(RAC中)

    本文链接:https://www.haomeiwen.com/subject/dymhjxtx.html