我在网上找到了这个代码,我很惊讶它基本上与我想要的相反。这是方法......
- (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)];
cell.tag = row;
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 = @"Joe";
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];
}
}
每个UIPickerView项的结果都是一个简单的复选标记。这很好,但是默认情况下,PickerView的所有元素都被选中,这意味着它们会显示一个复选标记(我不希望它们被选中,除了我在代码中专门选择的那些)。你有可能编辑我的方法,并试图找出如何做我正在做的事情。
另外,我如何才能看到用户在我的代码中选择的元素。救命啊!
答案 0 :(得分:1)
从这个块判断,存储了一个名为selectedItems
的数组,它包含与行对应的NSNumber
个对象。
if ([selectedItems indexOfObject:[NSNumber numberWithInt:row]] != NSNotFound) {
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[cell setAccessoryType:UITableViewCellAccessoryNone];
}
如果选中了rowstarts,则必须初始化selectedItems
以包含每行的NSNumber
对象。尝试将其初始化为空。要阅读所选内容,请遍历其内容编号。
答案 1 :(得分:0)
也许这可能会有所帮助:
使用UITableView并在选择或取消选择时切换单元附件类型。
cell.accessoryType = UITableViewCellAccessoryCheckmark