2009-06-24 2 views

Antwort

12

Lassen Sie Ihren Controller (oder was auch immer das Verhalten des PickerView steuert) das UIPickerViewDelegate-Protokoll. Dann implementieren:

- (int) numberOfColumnsInPickerView:(UIPickerView*)picker 

die Anzahl der Spalten zurück Sie wollen, und

- (int) pickerView:(UIPickerView*)picker numberOfRowsInColumn:(int)col 

die Anzahl der Zeilen für jede Spalte zurückzukehren, und schließlich:

- (UIPickerTableCell*) pickerView:(UIPickerView*)picker tableCellForRow:(int)row inColumn:(int)col 

einrichten jede Zelle.

Siehe die Referenz für UIPickerView und UIPickerViewDelegate.

+0

Der Link für den anständigen Code ist Beispiel ist nicht verfügbar. Ich habe es aus deiner Antwort gelöscht – Dejell

2

Es gibt ein hervorragendes Tutorial zu diesem Thema here.

0

Angenommen, Sie haben ein Wörterbuch oder ein paar Arrays, die Ihre statischen Daten enthalten. Der Einfachheit halber werde ich mit einem sehr einfachen Array gehen.

Sie müssen die Schnittstellendefinition Ihrer Ansichts-Controller ändern, um dem Programm mitzuteilen, dass Ihr Ansichts-Controller Daten und Delegation an eine Auswahlansicht bereitstellen kann.

@interface NVHomeViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource> 

als nur ein paar Methoden der Umsetzung wird es jedoch funktioniert Dokumentation für andere Methoden überprüft werden soll, die optional sind aber mehr Anpassung und Kontrolle bieten.

@interface NVHomeViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource> 

NSArray *options; 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    options = @[@"a",@"b",@"c",@"d"]; 
} 

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

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

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

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ 
    NSLog(@"%@ selected.",[options objectAtIndex:row]); 
}