首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UIPickerView中的几个选定选项包含一个部分?

UIPickerView中的几个选定选项包含一个部分?
EN

Stack Overflow用户
提问于 2018-10-17 04:37:18
回答 1查看 0关注 0票数 0

可以在UIPickerView中有几个选定的选项吗? 例如,var array = [1,2,3,4,5]在UIPickerView中,在UIPickerView中[1,3,5]只有一个部分同时选择。 提前致谢。

EN

回答 1

Stack Overflow用户

发布于 2018-10-17 14:16:11

这是完全相同的良好控制

还有一些工作只使用UITapGestureRecognizer。

目标C.

代码语言:javascript
复制
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
    UITableViewCell *cell = (UITableViewCell *)view;

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
        [cell setBackgroundColor:[UIColor clearColor]];
        [cell setBounds: CGRectMake(0, 0, cell.frame.size.width -20 , 44)];
        UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleSelection:)];
        singleTapGestureRecognizer.numberOfTapsRequired = 1;
        [cell addGestureRecognizer:singleTapGestureRecognizer];
    }

    if ([selectedItems indexOfObject:[NSNumber numberWithInt:row]] != NSNotFound) {
        [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    } else {
        [cell setAccessoryType:UITableViewCellAccessoryNone];
    }
    cell.textLabel.text = [datasource objectAtIndex:row];
    cell.tag = row;

    return cell;
}

- (void)toggleSelection:(UITapGestureRecognizer *)recognizer {
    NSNumber *row = [NSNumber numberWithInt:recognizer.view.tag];
    NSUInteger index = [selectedItems indexOfObject:row];
    if (index != NSNotFound) {
        [selectedItems removeObjectAtIndex:index];
        [(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryNone];
    } else {
        [selectedItems addObject:row];
        [(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryCheckmark];
    }
}

迅速

代码语言:javascript
复制
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView) -> UIView {
    var cell: UITableViewCell = view
    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyleDefault, reuseIdentifier: nil)
        cell.setBackgroundColor(UIColor.clearColor())
        cell.setBounds(CGRectMake(0, 0, cell.frame.size.width - 20, 44))
        var singleTapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "toggleSelection:")
        singleTapGestureRecognizer.numberOfTapsRequired = 1
        cell.addGestureRecognizer(singleTapGestureRecognizer)
    }
    if selectedItems.indexOfObject(NSNumber.numberWithInt(row)) != NSNotFound {
        cell.setAccessoryType(UITableViewCellAccessoryCheckmark)
    }
    else {
        cell.setAccessoryType(UITableViewCellAccessoryNone)
    }
    cell.textLabel.text = datasource.objectAtIndex(row)
    cell.tag = row
    return cell
}

func toggleSelection(recognizer: UITapGestureRecognizer) {
    var row: Int = NSNumber.numberWithInt(recognizer.view.tag)
    var index: UInt = selectedItems.indexOfObject(row)
    if index != NSNotFound {
        selectedItems.removeObjectAtIndex(index)
        (recognizer.view).setAccessoryType(UITableViewCellAccessoryNone)
    }
    else {
        selectedItems.addObject(row)
        (recognizer.view).setAccessoryType(UITableViewCellAccessoryCheckmark)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档