Search code examples
iphoneobjective-ciosuipickerview

UIPIckerView showing images and strings


I have a UIPickerView with 3 components, I need the first 2 components to show a string and the third to show an image. Can I do this by implementing both:

- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
          forComponent:(NSInteger)component reusingView:(UIView *)view

Or do I need to create labels and only implement viewForRow?


Solution

  •     - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
          forComponent:(NSInteger)component reusingView:(UIView *)view
        {
    UILabel *firstLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 60, 32)];
    firstLabel.text = [array1 objectAtIndex:row];
    firstLabel.textAlignment = UITextAlignmentLeft;
    firstLabel.backgroundColor = [UIColor clearColor];
    
    UILabel *secondLabel = [[UILabel alloc] initWithFrame:CGRectMake(165, 0, 60, 32)];
    secondLabel.text = [array2 objectAtIndex:row];
    secondLabel.textAlignment = UITextAlignmentLeft;
    secondLabel.backgroundColor = [UIColor clearColor];
    
    UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[countries objectAtIndex:row]]];
    
    UIImageView *icon = [[UIImageView alloc] initWithImage:img];        
    temp.frame = CGRectMake(170, 0, 30, 30);
    
    
    
    
    UIView *tmpView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 32)] autorelease];
    [tmpView insertSubview:icon atIndex:0];
    [tmpView insertSubview:firstLabel atIndex:0];
    [tmpView insertSubview:secondLabel atIndex:0];
    [tmpView setUserInteractionEnabled:NO];
    [tmpView setTag:row];
    [channelLabel release];
    [temp release];
    return tmpView;
    
    
        }