zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    lintcode:Binary Search 二分查找
    lintcode:1-10题
    leetcode 5 :Longest Palindromic Substring 找出最长回文子串
    leetcode 4 : Median of Two Sorted Arrays 找出两个数组的中位数
    Project Euler 78:Coin partitions
    Project Euler 77:Prime summations
    Project Euler 76:Counting summations
    筛选法求素数
    Codeforces D546:Soldier and Number Game
    Project Euler 75:Singular integer right triangles
  • 原文地址:https://www.cnblogs.com/wangxiaorui/p/5497349.html
Copyright © 2011-2022 走看看