Aggiunta di un UIPickerView su uno UITabBarController
-
23-09-2019 - |
Domanda
Sto cercando di avere una diapositiva UIPickerView dalla parte inferiore dello schermo (sopra la parte superiore di una barra delle schede), ma non riesco a farlo vedere. Il codice effettivo per l'animazione viene da uno dei progetti di esempio di codice di Apple (DateCell). Chiamo questo codice dal controller prima vista (FirstViewController.m) sotto il controller barra delle schede.
- (IBAction)showModePicker:(id)sender {
if (self.modePicker.superview == nil) {
[self.view.window addSubview:self.modePicker];
// size up the picker view to our screen and compute the start/end frame origin for our slide up animation
//
// compute the start frame
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
CGSize pickerSize = [self.modePicker sizeThatFits:CGSizeZero];
CGRect startRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height, pickerSize.width, pickerSize.height);
self.modePicker.frame = startRect;
// compute the end frame
CGRect pickerRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height - pickerSize.height, pickerSize.width, pickerSize.height);
// start the slide up animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
// we need to perform some post operations after the animation is complete
[UIView setAnimationDelegate:self];
self.modePicker.frame = pickerRect;
// shrink the vertical size to make room for the picker
CGRect newFrame = self.view.frame;
newFrame.size.height -= self.modePicker.frame.size.height;
self.view.frame = newFrame;
[UIView commitAnimations];
// add the "Done" button to the nav bar
self.navigationItem.rightBarButtonItem = self.doneButton;
}}
Ogni volta che questa azione incendi attraverso un'UIBarButtonItem che vive in un UINavigationBar (che è tutto sotto la FirstViewController) non succede nulla. Qualcuno può per favore offrire qualche consiglio?
Soluzione
Risulta che avevo perso il fatto molto importante che l'UIPickerView era stato definito in Interface Builder così ... dopo averlo fatto e collegando il tutto all'uscita funziona!