iOS: Cercando di aggiungere barra di navigazione a modale UITableViewController
-
25-10-2019 - |
Domanda
Sto seguendo l'applicazione CoreDataRecipes per mostrare modaly lo schermo aggiuntivo quando voglio aggiungere un nuovo elemento. Tuttavia non riesco a ottenere la barra per visualizzare in alto in modo da poter premere 'Fatto' o 'Cancellare'.
Nel XI ter chiamando il controller modale ho il pulsante + legata al modale scorrere il controller tramite IB.
Ho il seguito nella mia modale di controllo
self.navigationItem.title = @"Add";
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];
self.navigationController.navigationBarHidden = NO;
Nel mio viewDidLoad
Il modale regolatore visualizza bene, tranne non c'è un bar, quindi non posso lasciare quello schermo.
Soluzione
È necessario aggiungere prima della popover è effettivamente presentato.
Dove si crea il popover modale, è necessario creare all'interno di un'UINavigationController prima.
Quindi, procedere come segue.
PopoverView *foo = [[PopoverView alloc] initWithNibName:@"PopoverView" bundle:nil];
// Here you pass through properties if you need too.
// ...
UINavigationController *navC = [[UINavigationController alloc] initWithRootView:foo];
[foo release];
[self.navigationController presentModalViewController:navC animated:YES];
che darà la vista modale della barra di navigazione, che si sta cercando di modificare.
Altri suggerimenti
In alternativa , si potrebbe mantenere il vostro segue storyboard. In Xcode, selezionare il controller della vista che si sta tentando di transizione verso e incorporarlo in un controller di navigazione.
Ora, nel viewDidLoad di quel controller della vista, aggiungere:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
e infine la richiamata:
- (void)cancel {
[self dismissModalViewControllerAnimated:YES];
}
Se avete solo bisogno l'aspetto della barra, non proprio la sua funzionalità, è possibile trascinare la barra di navigazione (UINavigationBar) o barra degli strumenti (UIToolbar) Controll dal pannello multimediale sul vostro vista e passare da lì.
ho avuto una situazione simile in cui mi stava caricando un UITableViewController in un containerView. Il containerView era all'interno di un UIViewController che è stato presentato in un modo modale.
Io, come voi, necessaria la barra di navigazione per avere un titolo e un pulsante Done / Annulla.
Dopo traboccante lo stack, ho finalmente fatto questo -
trascinato un UIView come primo elemento nella tabella Visualizza nel IB. Questo ha automaticamente un'altezza di 44 punti e scattò verso l'alto. E 'anche spostato i miei verso il basso prima sezione.
ho trascinato un UIButton (pulsante Fine) all'interno di questa vista. Creato un IBOutlet ad esso e chiamato
[self dismissViewControllerAnimated:YES completion:nil];
Disclaimer:
1) Questo falso nav-bar farà scorrere insieme alla Tableview. 2) Questo potrebbe non essere una soluzione per quello che Bot ha chiesto, ma è un'opzione per altri che potrebbero essere alla ricerca di qualcosa di simile.