[英]UIView doesn't seem to be remembering its tag
我正在使用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开始, 然后您将能够知道它是在其他位置设置还是未正确设置。
if (indexPath.section == 0) {
pickerView.tag = 1;
}
else if (indexPath.section == 1) {
pickerView.tag = 2;
}
在将标签添加到视图之后,将其设置为pickerView。 现在,视图上的pickerView是原始实例的副本。 将标记代码移到addSubView调用上方
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.