5

Ho una classe UIViewController (Supponiamo che sia XXX). Mi presento questo controller di vista modale come dal codice ..Come aggiungere UINavigationBar in un UIViewController?

XXX *xxx = [ [XXX alloc] init]; 
[self presentModalViewController:xxx animated:YES]; 
[xxx release]; 

voglio aggiungere una barra di navigazione nella parte superiore della vista XXX. Quindi ho utilizzato l'oggetto UINavigationBar nel metodo loadView di XXX.

UINavigationBar *navBar = [ [UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
[self.view addSubview:navBar]; 
[navBar release]; 

Tuttavia, genera un errore come "EXC_BAD_ACCESS". Qualsiasi aiuto...?

Grazie

+0

tenta di aggiungere Navigationbar alla visualizzazione XXX in XIB –

+0

non sto usando IB qui – Confused

+0

Se u utilizzare la navigazione di u deve spingerlo ... cioè. 'pushViewController' deve essere usato invece presentModalViewController .. – Krunal

risposta

17

OPZIONE-1:

Prova ad aggiungere barra di navigazione dalla XIB di viewController chiamati XXX.

OPZIONE-2:

Aggiungi un UINavigationController e presentarlo modale.

Sostituire il codice:

XXX *xxx = [[XXX alloc] init]; 
[self presentModalViewController:xxx animated:YES]; 
[xxx release]; 

con questo codice:

XXX *xxx = [[XXX alloc] init]; 
UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:xxx]; 
[self presentModalViewController:navigation animated:YES]; 
[navigation release]; 

Spero che questo ti aiuta.

+0

Grazie .. Quindi, non possiamo aggiungere UINavigationBar senza creare UINavigationController qui. Ho ragione? – Confused

+0

@Rajkanth: Sì, probabilmente dovrebbe essere il caso, per quanto ne so. Mentre ricevi un "EXC_BAD_EXCESS" quando provi ad aggiungerlo a livello di programmazione. –

0

lo fate come questo:

XXX *xxx = [[XXX alloc] init]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:xxx]; 
[self presentModalViewController:navigationController animated:YES]; 
[xxx release]; 
[navigationController release]; 
2

Sostituire il codice con:

XXX *xxx = [[ [XXX alloc] init]autorelease]; 
    [self presentModalViewController:xxx animated:YES]; 

    UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:xxx]; 
    [self presentModalViewController:navigation animated:YES]; 
    [navigation release]; 

penso che risolverà il vostro "EXC_BAD_ACCESS" problema.

1

puoi provare aggiungendo la barra degli strumenti nella parte superiore della vista. In molti casi ho visto per il controller MODAL popal questa è una buona soluzione. ma se si desidera esplorare più controller dal controller MODAL, utilizzare UINavigationController.

enter image description here

Problemi correlati