自定义UIPicker

我一直在努力的应用程序,有3 uipickers。 我想在每个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 

视图只能有一个家长。 但是你正试图用3个父母(3个捡取者)的每个视图。 无论select器如何,您都会尝试为每个选取器的组件X使用相同的图像视图集。 这是行不通的。

你需要三组数组,而不仅仅是一组数组。 换句话说,你不能分享采摘者之间的意见。