2012-02-02 3 views
-1

Верно, ребята, я довольно новичок в xcode и iPhone SDK, но продолжал его в течение последних нескольких недель, медленно добирался туда, однако я только начал создавать приложение, которое использует UIPickerView, поэтому далеко у меня есть сборщик с 7 значениями. Когда значение выбрано, оно отображается внутри метки ... Довольно простой материал. Но пока я не могу найти учебники, в которых рассказывается, как загрузить стандартный UIImageView, на который я могу обмениваться изображениями, в зависимости от того, что выбрано в сборщике. (Кружки с кадром каждого человека). Ребята, теперь, где бы я ни находил помощь это или мне точку в правильном направлении .....Noob запрос относительно UIPickerView

пока мой код довольно стандартный:

в .h файле у меня есть: -

#import <UIKit/UIKit.h> 

@interface Team : UIViewController 
{ 
    IBOutlet UIPickerView *pickerView; 
    NSMutableArray *list; 
    IBOutlet UILabel *pickerLabel; 
    IBOutlet UIImage *pickerImage; 
} 
@end 

и в .м файл У меня есть: -

#import "Team.h" 

@implementation Team 

-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)thePickerView{ 
    return 1; 
} 

-(NSInteger) pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{ 
    return [list count]; 
} 

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

} 

-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 

    NSString *string = [NSString stringWithFormat:@"You Selected %@", [list objectAtIndex:row]]; 
    pickerLabel.text = string; 
} 



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)didReceiveMemoryWarning 
{ 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    list = [[NSMutableArray alloc]init]; 
    [list addObject:@"Doug Filder"]; 
    [list addObject:@"Chris Savage"]; 
    [list addObject:@"Nick Bennett"]; 
    [list addObject:@"Aimee Vacher"]; 
    [list addObject:@"Brandy Cardwell"]; 
    [list addObject:@"Jon West"]; 
    [list addObject:@"Dan Parsons"]; 

    // Do any additional setup after loading the view from its nib. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

ответ

1

Вы можете использовать NSDictionary хранить имя человека и связать имя файла, , например:

Прежде всего, изменить что UIImage на UIImageView:

@interface Team : UIViewController 
{ 
    IBOutlet UIPickerView *pickerView; 
    NSMutableArray *list; 
    NSMutableDictionary *filenames; 
    IBOutlet UILabel *pickerLabel; 
    IBOutlet UIImageView *pickerImage; 
} 
@end 

Тогда, вот как вы загружаете изображение в него:

- (void)viewDidLoad { 
    list = [[NSMutableArray alloc]init]; 
    [list addObject:@"Doug Filder"]; 
    [list addObject:@"Chris Savage"]; 
    [list addObject:@"Nick Bennett"]; 
    [list addObject:@"Aimee Vacher"]; 
    [list addObject:@"Brandy Cardwell"]; 
    [list addObject:@"Jon West"]; 
    [list addObject:@"Dan Parsons"]; 

    filenames = [[NSMutableDictionary alloc] init]; 
    [filenames setObject:@"DougFilder.jpg" forKey:@"Doug Filder"]; 
    [filenames setObject:@"ChrisSavage.jpg" forKey:@"Chris Savage"]; 
    [filenames setObject:@"NickBennett.jpg" forKey:@"Nick Bennett"]; 
    [filenames setObject:@"AimeeVacher.jpg" forKey:@"Aimee Vacher"]; 
    [filenames setObject:@"BrandyCardwell.jpg" forKey:@"Brandy Cardwell"]; 
    [filenames setObject:@"JonWest.jpg" forKey:@"Jon West"]; 
    [filenames setObject:@"DanParsons.jpg" forKey:@"Dan Parsons"]; 
} 

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

} 

-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 

    NSString *string = [NSString stringWithFormat:@"You Selected %@", [list objectAtIndex:row]]; 
    pickerLabel.text = string; 

    NSString *filename = [filenames objectForKey:[list objectAtIndex:row]]; 
    [pickerImage setImage:[UIImage imageNamed:filename]]; 
} 

Надеюсь, это поможет! :)

+0

Вы должны использовать массив в качестве источника данных. И дополнительный словарь, чтобы превратить эти ключи из массива в имена файлов. '[list allKeys]' вернет массив с неопределенным порядком. –

+0

Ha! Я не знал этого. Будет исправить :) –

+0

Как бы реализовать этот Маттиас? – WLyne86

1

просто заменить этот

-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 

     NSString *string = [NSString stringWithFormat:@"You Selected %@", [list objectAtIndex:row]]; 
     pickerLabel.text = string; 
     pickerImage = [UIImage imageNamed:string]; 
    } 
Смежные вопросы