2 Pickersview sur une même vue

Bonjour à  tous,


 


Je suis actuellement en train de coder une application sur Ipad. Sur une de mes vues j'ai besoin d'avoir 2 pickerView. J'ai suivi plusieurs tutos sur internet mais je n'ai jamais de résultats.


 


Voilà  mon problème : j'ai un pickerView qui affiche bien toutes les données de la liste que j'ai défini mais pas le second, il ne réagit pas du tout...


 


Voila le code de ma page :


 


.h


 



#import <UIKit/UIKit.h>

@interface ViewWallController : UIViewController{

// liste des informations
NSMutableArray *materialList;
NSMutableArray *deflectionMaterialList;

//pickerview
IBOutlet UIPickerView *materialPV;
IBOutlet UIPickerView *deflectionMaterialPV;
}


@end

.m


 



#import "ViewWallController.h"

@interface ViewWallController ()

@end

@implementation ViewWallController

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

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.

materialList = [[NSMutableArray alloc] init];
[materialList addObject:@test];

deflectionMaterialList = [[NSMutableArray alloc] init];
[deflectionMaterialList addObject:@Deflection Material];

NSLog(@tst);

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}


- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {

// ici a 2 pour voir si le deuxième picker view reagit
return 2;
}


- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {

if ( thePickerView ==materialPV) {
return [materialList count];
}
else if (thePickerView==deflectionMaterialPV)
return [deflectionMaterialList count];

return 0;
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

if ( thePickerView == materialPV)
return [materialList objectAtIndex:row];
else if (thePickerView==deflectionMaterialPV)
return [deflectionMaterialList objectAtIndex:row];

return @fail;
}

@end

Alors mon pickerview material affiche ce que j'ai besoin mais pas le pickerview deflectionmaterialPV...


 


Merci a tous


tbille


Mots clés:

Réponses

  • Le deuxième UIPickerView a bien le (Delegate&)DataSource ?


  • Alf1996Alf1996 Membre
    avril 2013 modifié #3

    Bonjour,


    Tu devrais mettre des NSLog pour voir si le code passe bien dans les méthodes des pickerView...


    As-tu bien défini les delegate ?


    A l'occasion, tu peux aussi aller te présenter dans la section adéquate...


     


     


    Edit : grillée par Larme !


  • Ce qui me surprend, c'est que dans ton code (viewDidLoad), je ne vois pas du tout d'affectation de delegate, non pour le premier, ni pour le deuxième... C'est donc bizarre que ton premier pickerView fonctionne...


     


    dans le .m, viewDidLoad :



    self.materialPV.delegate=self;
    self.deflectionMaterialPV.delegate=self;

     

     


     


    et dans le .h, 



    @interface ViewWallController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>{
    ...
    }

  • CéroceCéroce Membre, Modérateur

    Il a pu le faire dans le xib.


  • le return 2 dans numberOfComponentsinPickerView est bizarre, mais ça n'explique pas le problème.


  • Il a pu le faire dans le xib.


     


    Ah oui c'est vrai... je ne l'utilise jamais car je préfère dans le code, et du coup je n'y avais pas pensé !


    Par contre, comme il débute, il utilise surement Storyboard (que je ne connais toujours pas), et dans ce cas c'est peut-être différent ?


     


     


    le return 2 dans numberOfComponentsinPickerView est bizarre, mais ça n'explique pas le problème.


     


    Oui, c'est un peu bizarre mais a priori çà  n'explique pas le problème. Peut-être que les deux pickerViews sont tous les deux à  deux rouleaux... Quoi qu'il en soit, les "magic numbers" sont à  éviter. C'est mieux de faire un define par exemple...  ::)

  • Désolé pour mon retard, je n'ai pas accès au code le soir.


     


    Merci pour votre aide.


     


    Le problème venais bien du fait que je n'avais pas affecter de delegate aux pickersView.


    Merci encore à  tous.


    tbille


  • CéroceCéroce Membre, Modérateur
    avril 2013 modifié #9

    Ah oui c'est vrai... je ne l'utilise jamais car je préfère dans le code, et du coup je n'y avais pas pensé !


     


    Moi aussi, je le fais plutôt par le code, mais les stagiaires que j'ai en formation le font souvent dans le xib; ça leur paraà®t plus simple. Parfois, les habitudes nous font prendre des chemins complexes. Par exemple, je créais les NSDatePicker par le code, par habitude. Ce sont les stagiaires qui m'ont montré que c'est bien plus simple de le faire dans le xib, sachant qu'il y a quand même quelques paramètres à  régler.


Connectez-vous ou Inscrivez-vous pour répondre.