zoukankan      html  css  js  c++  java
  • iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法

    先说一下原理,就是利用中间变量来记录某个选中状态的按钮,加一个判断,如果用户下一次点击的不是这个按钮那么用中间变量把这个按钮的选中状态取消掉,再把新的按钮赋值给中间变量,这能保证选中状态的惟一性。这里是OC 应用在iOS 项目中的,下面来看具体实现。

    首先我们先定义一个中间变量

    @property (strong,nonatomic)UIButton * tmpBtn;

    然后在ViewDidLoad方法里,创建四个按钮,设置它们属性,以及点击方法,在此外设置中间变量tmpBtn = nil;

    —(void)viewDidLoad{
         NSArray * array = [NSArray arrayWithObjects:@"默认",@"销量",@"价格",@"时间", nil];
             for (int i = 0; i<4; i ++) {
                UIButton * button = [[UIButton alloc]initWithFrame:CGRectMake(80*i, 0, 80, 40)];
                [button setTitle:[array objectAtIndex:i] forState:UIControlStateNormal];
                [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
                [button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
                [button.titleLabel setFont:[UIFont systemFontOfSize:14]];
                [button.layer setBorderWidth:0.3];
                button.userInteractionEnabled = YES;
                [button addTarget:self action:@selector(buttonSelected:) forControlEvents:UIControlEventTouchUpInside];
                [button setBackgroundColor:[UIColor whiteColor]];
                [button setTag:i];
                [self.view addSubview:button];
    
    
    }



    下面来看buttonselected:里面的实现过程

    -(void)buttonSelected:(UIButton*)sender{
        if (_tmpBtn == nil){
            sender.selected = YES;
            _tmpBtn = sender;
        }
        else if (_tmpBtn !=nil && _tmpBtn == sender){
            sender.selected = YES;
        
        }
        else if (_tmpBtn!= btn && _tmpBtn!=nil){
            _tmpBtn.selected = NO;
            sender.selected = YES;
            _tmpBtn = btn;
        }
    
    
    }
  • 相关阅读:
    Visual Studio Code使用NVM指定的节点版本
    webpackd学习的意义
    scss--函数 (Functions)--unit
    scss--函数 (Functions)--unitless
    JS中的事件绑定,事件捕获,事件冒泡以及事件委托,事件参数(event.target,e.srcElement,event.currentTarget,),兼容IE
    移动端rem
    单例模式
    代理模式
    装饰者模式
    策略模式
  • 原文地址:https://www.cnblogs.com/luqinbin/p/4874138.html
Copyright © 2011-2022 走看看