Как отображать изображения при выборе данных из UIPickerview в Apple iPhone SDK - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть многокомпонентный сборщик с двумя отдельными колесами, показывающими относительную информацию. Я хочу отобразить изображение в зависимости от того, какой компонент выбран. Например: если «AA» выбрано на обоих колесах, будет отображено изображение AA. Если правое колесо изменить на «B», будет отображено изображение AB.

Заранее спасибо за помощь.

С уважением,

1 Ответ

0 голосов
/ 03 декабря 2011

Вы можете сделать что-то вроде этого:

#import <UIKit/UIKit.h>

@interface PickerController: UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
    NSArray *titleStrings;
    UIPickerView *picker;
    UIImage *imageView;
}
@end

@implementation PickerController

- (id) init {
    if (self = [super init]) {
        titleStrings = [[NSArray alloc] initWithObjects:@"A", @"B", NULL];
        picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, 320, 100)];
        picker.showsSelectionIndicator = YES;
        picker.delegate = self;
        picker.dataSource = self;
        [self.view addSubview:picker];
        imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"empty.png"]];
        imageView.frame = CGRectMake(0, 200, imageView.frame.size.width, imageView.frame.size.height);
        [self.view addSubview:imageView];
        [imageView release];
        [picker release];
    }
    return self;
}

- (void) dealloc {
    [titleStrings release];
    [super dealloc];
}

/* UIPickerViewDataSource */

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return 2;
}

/* UIPickerViewDelegate */

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [titleStrings objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    NSString *first = [titleStrings objectAtIndex:[pickerView selectedRowInComponent:0]];
    NSString *second = [titleStrings objectAtIndex:[pickerView selectedRowInComponent:1]]; 
    NSString *imageName = [[NSString alloc] initWithFormat:@"%@%@", first, second];
    imageView.image = [UIImage imageNamed:imageName];
    [imageName release];
    [imageView sizeToFit];
}

@end
...