5

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

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». Любая помощь...?

Благодаря

+0

Try добавить в Панель навигации зрения XXX в XIB –

+0

Я не использую IB здесь – Confused

+0

Если и использовать навигацию, чем у вас, чтобы подтолкнуть его ... то есть. Вместо этого следует использовать pushViewController presentModalViewController. – Krunal

ответ

17

ВАРИАНТ-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]; 

Надеется, что это помогает вам.

+0

Спасибо .. Итак, мы не можем добавить UINavigationBar, не создавая здесь UINavigationController. Я прав? – Confused

+0

@ Rajkanth: Да, наверное, это должно быть так, насколько я знаю. Когда вы получаете «EXC_BAD_EXCESS» при попытке добавить его программно. –

0

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

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

Заменить код:

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

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

enter image description here

Смежные вопросы