5

Mam klasę UIViewController (Powiedzmy, że jest XXX). Przedstawiam ten kontroler widoku jako modalnie przez kod.Jak dodać UINavigationBar w UIViewController?

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

Chcę dodać pasek nawigacji u góry widoku XXX. Tak więc użyłem obiektu UINavigationBar w metodzie XXX: loadView.

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

Ale to zgłasza błąd jako "EXC_BAD_ACCESS". Jakaś pomoc...?

Dzięki

+0

Spróbuj dodać Navigationbar do XXX widzenia w XIB –

+0

nie używam IB tutaj – Confused

+0

Jeśli u używać nawigacji niż u trzeba przesunąć ... tj. "pushViewController" musi być użyty zamiast presentModalViewController .. – Krunal

Odpowiedz

17

Option 1:

spróbuj dodać pasek nawigacyjny z XI b viewController nazywa XXX.

Option 2:

Dodaj UINavigationController i przedstawić go modally.

Wymień kod:

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

z tym kodem:

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

nadzieję, że to pomaga.

+0

Dzięki .. Więc, Nie możemy dodać UINavigationBar bez tworzenia UINavigationController tutaj. Czy mam rację? – Confused

+0

@Rajkanth: Tak, prawdopodobnie tak powinno być, o ile wiem. Gdy otrzymujesz "EXC_BAD_EXCESS" podczas próby dodania go programowo. –

0

to zrobić tak:

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

Wymień kod z:

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

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

myślę, że będzie to rozwiązać "problem" EXC_BAD_ACCESS.

1

możesz spróbować tego, dodając pasek narzędzi w górnej części widoku. W wielu przypadkach widziałem dla popingu kontrolera MODAL to fajne rozwiązanie. ale jeśli chcesz nawigować więcej kontrolerów z kontrolera MODAL, powinieneś użyć UINavigationController.

enter image description here