0

我正在使用 CPPicker 在我的应用程序中实现水平选择器,并且我正在使用标签来确定我正在谈论的两个选择器中的哪一个。

     // Picker creation
     CPPickerView *pickerView = [[CPPickerView alloc] initWithFrame:CGRectMake(100, 5, 150, 40)];
     pickerView.dataSource = self;
     pickerView.delegate = self;
     pickerView.peekInset = UIEdgeInsetsMake(0, 40, 0, 40);
     [pickerView reloadData];
     pickerView.showGlass = YES;
     [cell addSubview:pickerView];

    if (indexPath.section == 0) {
        pickerView.tag = 0;
    }
    else if (indexPath.section == 1) {
        pickerView.tag = 1;
    }

    return cell;

然后稍后,我检查标签以指定pickerView 的标题。但它只为标签读取 0,因此两个选择器具有相同的值。

- (NSString *)pickerView:(CPPickerView *)pickerView titleForItem:(NSInteger)item {
    NSString *title = nil;

    if (pickerView.tag == 0) {
        title = [NSString stringWithFormat:@"%d", (200 + (item * 20))];
    }
    else if (pickerView.tag == 1) {
        title = [NSString stringWithFormat:@"%d", item + 1];
    }

    return title;
}

我在这里做错了什么?

4

2 回答 2

1

您是否在方法或函数中声明选择器视图。这意味着它在其他方法或函数中不可见。您可能需要将其设为属性或至少在类扩展中将其声明为实例变量。

标签的默认值为零,最好将标签计数从 1 开始,然后您将能够判断它是在其他地方设置还是未正确设置。

if (indexPath.section == 0) {
    pickerView.tag = 1;
}
else if (indexPath.section == 1) {
    pickerView.tag = 2;
}
于 2013-04-08T01:38:12.707 回答
0

在将标签添加到视图后,您将标签设置为 pickerView。视图上的 pickerView 现在是原始实例的副本。将标记代码移到 addSubView 调用上方

于 2013-04-08T01:58:55.443 回答