2011-02-10 17 views
8

Come si aggiunge un UIViewController esistente (che viene presentato utilizzando presentModalViewController) a un UINavigationController?Aggiunta di UINavigationController a UIViewController esistente

Quando l'utente tocca il pulsante, una nuova copia della mia vista di dettaglio deve essere spinta. (In altre parole, pushViewController visualizza pushViewController, modally, in un UINavigationController).

Il modo più semplice per abilitare questa funzionalità?

+0

non è chiaro quello che stai chiedendo. Vuoi presentare un UINavigationController modalmente? Quel "sembra" sbagliato ma non lo so per certo. – Bogatyr

+0

questa è la descrizione semplificata ... presentando UINavigationController modally ... (ma modificando UIViewController esistente) – marko

risposta

36

come si fa a creare il viewcontroller modale? Basta avvolgere il controller in un UINavigationController

Supponiamo che il codice modale è come questo:

MyExampleViewController *vc = [[[MyExampleViewController alloc] initWithNibName:@"MyExample" bundle:nil] autorelease]; 
[self presentModalViewController:vc animated:YES]; 

poi cambiare in qualcosa di simile:

MyExampleViewController *vc = [[[MyExampleViewController alloc] initWithNibName:@"MyExample" bundle:nil] autorelease]; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease]; 
[self presentModalViewController:navController animated:YES]; 
+0

c'è MyExampleViewController e MyDetailViewController nella proprietà viewControllers di navController. Ma lo schermo non è aggiornato (MyDetailViewController non è mostrato)? – marko

+0

come chiamare pushViewController in MyExampleViewController? – marko

+0

'[self.navigationController pushViewController: anotherVC animated: YES];' ?! –

0

Penso che sia necessario aggiungere un controller di navigazione nel delegato, dopo di che è possibile spingere la vista. In modo che tu possa spingere la vista da qualsiasi punto della tua applicazione.

su AppDelegate.h

UINavigationController *navig; 

su AppDelegate.M

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
    navig = [[UINavigationController alloc] initwithRootViewController:viewController.view]; 

    //[navig pushViewController:viewController animated:YES]; 
    [self.window addSubview:navig.view]; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

Non riesco a capire né la domanda né vedere la rilevanza di questa risposta :). – Bogatyr

+0

si vuole spingere controller newdetailview, quindi si dovrebbe avere il controller di navigazione quindi si può pus – Splendid

+0

non è l'avvio dell'applicazione ... – marko

Problemi correlati