Ios UIView没有';我好像不记得它的标签

Ios UIView没有';我好像不记得它的标签,ios,objective-c,ios5,ios6,Ios,Objective C,Ios5,Ios6,我正在使用CPPicker在我的应用程序中实现一个水平选择器,并且我正在使用标记来确定我所说的两个选择器中的哪一个 // Picker creation CPPickerView *pickerView = [[CPPickerView alloc] initWithFrame:CGRectMake(100, 5, 150, 40)]; pickerView.dataSource = self; pickerView.delegate = self;

我正在使用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;
}
我做错了什么?

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

标记的默认值为零,最好从1开始计算标记计数,这样您就可以知道它是在别处设置的还是设置不正确


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

您不认为最好从代码段中删除不必要的解剖引用吗?我建议在“pickerView.tag=1”这行上放置一个断点,以查看是否调用过它。如果不是,那么您是否正确地对表单元格进行排队和出列(我假设这是在表视图中,因为您使用的是'indexath.section'。正在调用它,它是一个表视图。一个问题是,您显然是在将
pickerView
添加为单元格的子视图,而不是
cell.contentView
的子视图。不过,我不知道这是否导致了您的问题。如果我这样做了,标题就是。)根本没有设置。我猜标记没有正确设置,因为在检查设置标题时,它的标记似乎已被忘记。所以,问题不在您认为的位置。这没有任何作用。(它仍然引用添加到视图中的标记。)
if (indexPath.section == 0) {
    pickerView.tag = 1;
}
else if (indexPath.section == 1) {
    pickerView.tag = 2;
}