Как добавить UINavigationBar в UIViewController? - PullRequest
5 голосов
/ 15 марта 2012

У меня есть UIViewController класс (скажем, это XXX). Я представляю этот контроллер вида как модально с помощью кода ..

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

Я хочу добавить панель навигации в верхней части представления XXX. Поэтому я использовал UINavigationBar объект в методе XXX loadView.

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

Но, он выдает ошибку как "EXC_BAD_ACCESS". Любая помощь ...?

Спасибо

Ответы [ 4 ]

17 голосов
/ 15 марта 2012

ОПЦИЯ-1:

Попробуйте добавить панель навигации из XIB viewController с именем XXX.

ОПЦИЯ-2:

Добавьте UINavigationController и представьте его модально.

Замените ваш код:

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

на этот код:

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

Надеюсь, это поможет вам.

2 голосов
/ 15 марта 2012

Замените ваш код на:

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

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

Я думаю, что это решит вашу "EXC_BAD_ACCESS" проблему.

1 голос
/ 15 марта 2012

вы можете попробовать это, добавив панель инструментов в верхней части представления. Во многих случаях, которые я видел для установки MODAL контроллера, это хорошее решение. но если вы хотите перемещать больше контроллеров из контроллера MODAL, вам следует использовать UINavigationController.

enter image description here

0 голосов
/ 15 марта 2012

вы делаете это так:

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