заголовок панели навигации не устанавливается iphone

В моем приложении я представляю modalviewcontroller следующим образом, и я не могу изменить заголовок панели навигации или какие-либо ее свойства, если на то пошло.

fullListTopCompanies *fullListTopCompaniesInstance = [[fullListTopCompanies alloc] initWithNibName:@"fullListTopCompanies" bundle:nil];

UINavigationController *cntrol = [[UINavigationController alloc] initWithRootViewController:fullListTopCompaniesInstance];

[fullListTopCompaniesInstance setTitle:@"TEST"];


UIBarButtonItem *submit = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                           target:self
                           action:@selector(displayViewForPosts)];
fullListTopCompaniesInstance.navigationItem.rightBarButtonItem = submit;
[submit release];


[self presentModalViewController:cntrol animated:YES];
[cntrol release];

Я попытался создать экземпляр делегата приложения и назначить его навигационный контроллер локальному экземпляру навигационного контроллера, но бесполезно.

Каким-то образом этот навигационный контроллер недоступен. К нему нельзя получить доступ с помощью «self.navigationitem». Всякий раз, когда я представляю modalviewcontroller с навигационным контроллером, эта навигация идет ниже фактического навигационного контроллера.

Кто-нибудь может помочь?

Спасибо заранее.


person neha    schedule 11.10.2010    source источник


Ответы (3)


Например, если вы пытаетесь установить заголовок панели навигации для ViewController с именем «ABCViewController», добавьте

self.Title = @"";

в методе viewWillAppear ABCViewController и попробуйте пересобрать и запустить.

Надеюсь это поможет. :)

person Parth Bhatt    schedule 07.11.2010

Всякий раз, когда я представляю modalviewcontroller с навигационным контроллером, эта навигация идет ниже фактического навигационного контроллера.

Эта проблема заключается в том, что, вызывая presentModalViewController: для себя, вы должны вызывать его для self.navigationController, чтобы навигационный контроллер не отображался под другим.

Что касается того, почему вы не можете установить свойства navigationController, я не знаю. Это выглядит нормально для меня. Но я предполагаю, что это потому, что вы устанавливаете свойства до viewDidLoad, вызываемого загрузчиком пера. Кажется, я помню, что у меня были такие проблемы давным-давно.

Вы должны установить заголовок и т. д. в методе viewDidLoad подкласса UIViewController, и я думаю, что ваши заботы закончатся.

person Thomas Børlum    schedule 11.10.2010

Я создал простое приложение на основе представления с шаблоном xcode, затем добавил ваш код, и он работает для меня...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

// Override point for customization after application launch.

// Add the view controller's view to the window and display.

TestViewController *fullListTopCompaniesInstance = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];

UINavigationController *cntrol = [[UINavigationController alloc] initWithRootViewController:fullListTopCompaniesInstance];

[fullListTopCompaniesInstance setTitle:@"TEST"];


UIBarButtonItem *submit = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                           target:self
                           action:@selector(displayViewForPosts)];
fullListTopCompaniesInstance.navigationItem.rightBarButtonItem = submit;

[window addSubview:viewController.view];
[window makeKeyAndVisible];

[viewController presentModalViewController:cntrol animated:YES];

[cntrol release];
[submit release];

return YES;

}

person Chiodo    schedule 11.10.2010