2010-10-07 2 views
2

Мне интересно, почему мой UINavigationController не позволяет мне установить заголовок. Это позволяет мне изменить оттенок навигации, но название и rightBarButtonItem, которые я установил, просто игнорируются. Зачем?UINavigationController Название не применяется

Вот мой код:

taps = 0; 

    UIView*controllerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 

    controllerView.backgroundColor = [UIColor whiteColor]; 

    controller = [[UIViewController alloc] init]; 

    [controller setView:controllerView]; 

    [controllerView release]; 

    navController = [[UINavigationController alloc] initWithRootViewController:controller]; 

    navController.navigationBar.barStyle = 1; 

    navController.navigationItem.title = @"Setup"; 

    UIBarButtonItem*item = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonSystemItemDone target:self action:@selector(dismissSetup:)]; 

    navController.navigationItem.rightBarButtonItem = item; 

    [item release]; 

    [self presentModalViewController:navController animated:YES]; 

    [mp stop]; 

p.s: Я знаю, что я не отпуская некоторые вещи я alloc'ed, я сделать это позже!

ответ

5

Контроллер навигации обновляет середину панели навигации в следующим образом: Если новый контроллер представления верхнего уровня имеет вид пользовательского заголовка, Навигационная панель отображает, что просмотр вместо заголовка по умолчанию Посмотреть. Чтобы указать пользовательский заголовок, установите свойство titleView вида элемент навигации контроллера. Если пользовательский заголовок не задан, на навигационной панели отображается метка , содержащая заголовок контроллера по умолчанию . Строку для этой метки обычно получают из названия свойства вида сам контроллер. Если вы хотите дисплей другого названия, чем один , связанный с контроллером вида

, установите свойство элемента навигации контроллера представления названия вместо этого.

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

И кстати: я не думаю, что navigationcontrollers должна быть представлена ​​модально:

Поскольку класс UINavigationController наследует от класса UIViewController, навигационные контроллеров имеют свое собственное мнение, что является доступный через вид . При развертывании интерфейса навигации вы должны установить это представление в качестве корня любой иерархии вида , которую вы создаете. Например, если вы сами развертываете навигационный интерфейс , вы должны сделать это представление основным подзором вашего окна. К установите интерфейс навигации внутри интерфейс панели вкладок, вы должны установить вид контроллера навигации как корневой вид соответствующей вкладки.

+0

как установить заголовок View контроллеры? – Pripyat

+5

На самом деле Apple отлично справляется с представлением навигационных контроллеров.В разделе «Отображение контроллера навигации в моделях» в разделе «Комбинированные интерфейсы контроллера просмотра» в Руководстве по программированию контроллера просмотра описано, как это делается здесь: http://developer.apple.com/library/ios/# featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html – Alyoshak

16

набор: self.title = @"This is my title"; в ViewController

(или в вашем случае установить controller.title = @"this is my title";)

+3

Лучший ответ. принятый ответ: tl; tr (слишком длинный для чтения) – Guy

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