• iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法


    iOS 实现多个按钮,点选一个其它都取消选中状态的最佳方法

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

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

     @property (strong,nonatomic)UIButton * MiddleBtn;

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

    —(void)viewDidLoad{
        MiddleBtn = nil;
    // treating unicode character as whitespace 如果出现这行警告 可能是由于粘贴网页上的代码的时候两行之间的回车引起的,两行之间重新输入回车就行...。。。删掉重新写一遍就ok了 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 (_MiddleBtn == nil){
            sender.selected = YES;
            _MiddleBtn = sender;
        }
        else if (_MiddleBtn !=nil && _MiddleBtn == sender){
            sender.selected = YES;
        
        }
        else if (_MiddleBtn!= sender && _MiddleBtn!=nil){
            _MiddleBtn.selected = NO;
            sender.selected = YES;
            _MiddleBtn = sender;
        }
    }
  • 相关阅读:
    C#根据html生成PDF
    Oracle 存储过程异常处理
    Oracle事务之一:锁和隔离
    跨域解决方案一:使用CORS实现跨域
    AJAX POST&跨域 解决方案
    使用 jQuery Deferred 和 Promise 创建响应式应用程序
    jQuery:多个AJAX/JSON请求对应单个回调并行加载
    解决td标签上的position:relative属性在各浏览器中的兼容性问题
    盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
    JQuery-UI Dialog下使用服务器端按钮失效
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5497349.html
Copyright © 2020-2023  润新知