2010-02-12 10 views
2

J'ai un xib dans lequel j'ai ajouté un delta nommé UIViewController. La vue sous delta est contrôlée par le delta viewcontroller, pas par le propriétaire du fichier. Sur la vue delta, j'ai un UIViewPicker. Mon problème est que je suis la programmation dans le UIPickerView dans le deltaviewcontroller et je publie deltaviewcontroller en tant que délégué et source de données pour le UIPickerView. Tout devrait fonctionner, mais quand je charge la vue deltaviewcontroller, l'application plante. Si je réalise tout de la même manière sous la vue du propriétaire du fichier, cela fonctionne très bien. Je me demande s'il y a vraiment un moyen de faire fonctionner UIPickerView avec un UIViewController et pas nécessairement le propriétaire d'un fichier.iPhone UIPickerView dans UIViewController

Pour les références, le code:

tête

@interface DeltaViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> { 
    NSMutableArray *arrayNo; 
    IBOutlet UIPickerView *pickerView; 
} 
@property (nonatomic, retain) UIPickerView *pickerView; 
@property (nonatomic, retain) NSMutableArray *arrayNo; 

@end 

mise en œuvre

#import "DeltaViewController.h" 

@implementation DeltaViewController 

@synthesize pickerView; 
@synthesize arrayNo; 

- (void)viewDidLoad 
{ 
    NSMutableArray *dollarsArray = [[NSMutableArray alloc] init]; 

    for (int i = 0; i < 100; i++) 
    { 
     NSString *item = [[NSString alloc] initWithFormat:@"%i", i]; 
     [dollarsArray addObject:item]; 
    } 

    self.arrayNo = dollarsArray; 

    [dollarsArray release]; 
} 

#pragma mark - 
#pragma mark Picker Data Source Methods 

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

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

#pragma mark Picker Delegate Methods 

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

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

@end 

S'il vous plaît indiquer si je fais quelque chose de mal. L'aide est très appréciée.

+0

Ce code semble correct si ce n'est que vous fuyez la chaîne "item". Quel est le crash/exception réel que vous obtenez? Pouvez-vous décrire et montrer le code pour charger/afficher le contrôleur de vue delta? – gerry3

+1

Ouvrez la console à partir du menu Exécuter et dites-nous l'erreur que vous obtenez – willcodejavaforfood

+0

Quel a été le problème? – kennytm

Répondre

2

Si vous recherchez comment ajouter un UIPickerView dans un UIView, vérifiez l'exemple de code Apple pour UIPickerView. Je pense que c'est l'un des meilleurs moyens d'apprendre à utiliser correctement les différentes classes. Il y a cinq projet qui inclut un UIPickerView. Voici le lien

UIPickerView class reference and sample code

0

Essayez de faire [self.view addSubview: pickerView]; dans votre méthode viewDidLoad.