美文网首页
iOS中 单选框的实现

iOS中 单选框的实现

作者: 悠辰清泪 | 来源:发表于2017-07-05 19:05 被阅读442次

    最近公司需求 需要做一个有很多单选框的页面 研究了一下 花了一天时间 写出来了(新手 大家见谅)

    先说一下实现思路:UITableview嵌套UICollectionview ,每一个UITableviewCell里面嵌套一个UICollectionview,并且将UICollectionview的数据源和代理通过方法传给VC,在通过运行时给UICollectionview动态添加2个属性,第一个是这个UICollectionview所在的UITableviewCell的对应的indexpath,第二个是UICollectionview选中的UICollectionviewcel

    废话不多说 开始吧

    设置数据源 这里取随机数(可能每次题的数量不一样,选项的数量也不一样)

    ```

    - (void)initData {

    //设置UITable和UICollection rows数量

    constNSInteger numberOfTableViewRows = arc4random_uniform(5) +2;

    //const NSInteger numberOfCollectionViewCells = arc4random_uniform(10) +3;

    //设置数据源

    for(NSIntegeri =0; i < numberOfTableViewRows; i ++) {

    NSMutableArray*collectionRowArray = [NSMutableArrayarray];

    NSIntegercount =arc4random_uniform(2) +2;

    for(NSIntegerj =0; j < count ; j ++) {

    //UIColor *collectionRowCellColor = randomColor;

    //[collectionRowArray addObject:collectionRowCellColor];

    NSString*option = [NSStringstringWithFormat:@"选项%ld",j +1];

    [collectionRowArrayaddObject:option];

    }

    [self.dataSourceArrayaddObject:collectionRowArray];

    }

    }

    ```

    数据源设置完了 下一个就是创建UITableview和设置UITableview的数据源和代理 这个比较简单就不贴代码了

    关键的来了 新建UITableviewcell的子类,ContentCollectionTableViewCell给这个子类添加一个UICollectionView的属性,并在初始化方法里添加到cell.contentview上,定义一个公有方法设置这个collectionview的数据源和代理,方法名称为:

    ```

    - (void)setCollecitonDelagate:(id) delegate indexPath:(NSIndexPath*)index;

    ```

    ```

    - (void)setCollecitonDelagate:(id) delegate indexPath:(NSIndexPath*)index{

    if(!self.collecitonView.delegate&& !self.collecitonView.dataSource) {

    self.collecitonView.delegate= delegate;

    self.collecitonView.dataSource= delegate;

    }

    objc_setAssociatedObject(self.collecitonView,collectionCellIndexPathInTableCell, index,OBJC_ASSOCIATION_RETAIN_NONATOMIC);

    }

    ```

    通过这个方法 实现了collecitonView的数据源和代理 以及collecitonView对应的UITableCell的indexpath;

    相关文章

      网友评论

          本文标题:iOS中 单选框的实现

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