J'ai lu beaucoup de choses sur la façon dont je peux utiliser un UIPickerView
comme inputView
de mon UITextField
. Le truc c'est que je peux appeler le UIPickerView
quand je tape sur le UITextField
. Cependant, mon application se charge toujours avec le UIPickerView
affiché. J'ai déjà essayé de changer le myownpickerview.hidden = YES;
dans viewDidLoad
, mais cela pose problème lorsque je clique sur UITextField
. Il n'apparaîtra pas et si je clique plusieurs fois, le débogueur montre qu'il y aurait une erreur.
Est-ce que quelqu'un peut-il me montrer la bonne direction? Je ne veux que le UIPickerView
affiché après avoir tapé sur le UITextField
Je travaille toujours sur ma toute première application iOS. Soyez patient. Merci =)
Essayez ceci, cela fonctionne très bien, mettez-le dans viewdidload.
yourpicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 50, 100, 150)];
[yourpicker setDataSource: self];
[yourpicker setDelegate: self];
yourpicker.showsSelectionIndicator = YES;
self.yourtextfield.inputView = yourpicker;
ne pas faire[self.view addSubview: yourpicker];
cette
Utilisez comme ça,
// Picker
UIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,150)];
picker.dataSource = self;
picker.delegate = self;
// Tool bar
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,35)];
pickerToolbar.barStyle = UIBarStyleDefault;
// Bar button
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneButtonTapped:)];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[pickerToolbar setItems:@[flexSpace,doneButton]];
self.selectedLockerTextFiled.inputAccessoryView = pickerToolbar;
self.selectedLockerTextFiled.inputView = picker;
Ci-dessous le code pour les actions de bouton terminé,
-(void)pickerDoneButtonTapped:(id)picker{
[self.view endEditing:YES];}