2010-10-27 1 views
8

Ho un UITableViewController esistente precedentemente utilizzato in un UINavigationController.Aggiungi UINavigationBar a UITableViewController senza UINavigationController

Ho bisogno di convertirlo per essere presentato come una vista modale. Tuttavia, voglio ancora avere una barra di navigazione in alto. So che sembra strano, perché non presentarlo in UINavigationController se voglio un UINavBar? Voglio presentarlo senza UITabBarController associato al mio UINavigationController.

Ho provato ad aprire XIB, aggiungendo una nuova vista, spostando UITableView come una sottoview e aggiungendo una barra di navigazione a quella nuova vista. Tuttavia questo non sembra avere alcun impatto e l'intera tableview è ancora presentata - nessuna barra di navigazione è visibile. Penso che questo sia dovuto al fatto che la classe è una sottoclasse di UITableViewController.

Devo convertire questo in un UIViewClass? C'è un buon approccio all'aggiunta di una barra di navigazione nel codice o tramite Interface Builder a un UITableViewController esistente?

Grazie per qualsiasi consiglio su come avvicinarsi a questo.

risposta

15

Hai modificato la connessione in XIB per la vista Proprietario file? Dovrebbe puntare alla tua vista esterna che contiene sia la barra di navigazione che la tabella.

Ma non sono sicuro di capire perché non si desidera utilizzare un controller di navigazione. Basta fare questo:

MyViewController *viewController = [[[MyViewController alloc] init] autorelease]; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:viewController] autorelease]; 
[self presentModalViewController:navController animated:YES]; 

Lo faccio tutto il tempo in cui la presentazione di una vista modale - sembra più pulito di una barra di navigazione incluso direttamente nella vista.

+0

Grazie. Questo era un po 'uno schiaffo sulla fronte per me. Ha perfettamente senso. – Nick

+0

Avrei votato questa risposta 10 volte se potessi. – Alyoshak