我一直在开发应用程序,它有3个uipickers。我想在每个uipicker中实现图像。但是如下图所示,它只影响一个uipicker,而不是所有的uipicker。我想知道如何自定义图像中显示的所有uipicker元素
- (void)loadView
{
picker1 = [[UIPickerView alloc] initWithFrame:CGRectMake(30, 200, 250, 250)];
picker1.delegate = self;
picker1.dataSource = self;
picker1.showsSelectionIndicator = YES;
picker1.tag=1;
picker2 = [[UIPickerView alloc] initWithFrame:CGRectMake(390, 200, 250, 250)];
picker2.delegate = self;
picker2.dataSource = self;
picker2.showsSelectionIndicator = YES;
picker2.tag=2;
picker3 = [[UIPickerView alloc] initWithFrame:CGRectMake(750, 200, 250, 250)];
picker3.delegate = self;
picker3.dataSource = self;
picker3.showsSelectionIndicator = YES;
picker3.tag=3;
self.view = [[UIView alloc] initWithFrame:CGRectZero];
self.view.backgroundColor=[UIColor whiteColor];
[self.view addSubview:picker1];
[self.view addSubview:picker2];
[self.view addSubview:picker3];
UIImage *seven = [UIImage imageNamed:@"seven.png"];
UIImage *bar = [UIImage imageNamed:@"bar.png"];
for(int i=1; i<=4; i++)
{
UIImageView *sevenView = [[UIImageView alloc] initWithImage:seven];
UIImageView *barView = [[UIImageView alloc] initWithImage:bar];
NSArray *imageViewArray = [[NSArray alloc] initWithObjects:
sevenView,barView,nil];
NSString *fieldName = [[NSString alloc] initWithFormat:@"column%d",i];
[self setValue:imageViewArray forKey:fieldName];
}
}
-(UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
{
//NSLog(@"%d",component);
NSLog(@"tag: %d",pickerView.tag);
if(pickerView.tag==1)
{ NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array1 = [self valueForKey:arrayName];
return [array1 objectAtIndex:row];
}
else if(pickerView.tag==2)
{ NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array2 = [self valueForKey:arrayName];
return [array2 objectAtIndex:row];
}
else
{ NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d",component+1];
NSArray *array3 = [self valueForKey:arrayName];
return [array3 objectAtIndex:row];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
}
- (void)dealloc {
}
#pragma mark UIPickerViewDelegate methods
- (NSString*)pickerView:(UIPickerView*)pv titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [NSString stringWithFormat:@"%d",row];
}
#pragma mark UIPickerViewDataSource methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pv
{
return 4;
}
- (NSInteger)pickerView:(UIPickerView*)pv numberOfRowsInComponent:(NSInteger)component
{
return 2;
}
@end
答案 0 :(得分:1)
视图只能有一个父级。但是你试图为3个父母(3个采摘者)使用每个视图。无论选择器如何,您都尝试对每个选取器的组件X使用相同的图像视图集。那不行。
您需要三组数组,而不仅仅是一组数组。换句话说,您无法在选择器之间共享视图。