iPhone - панель навигации кнопка «Назад» не отвечает - PullRequest
2 голосов
/ 19 марта 2011

У меня есть полноэкранный режим ModalView, который называется так:

PreferencesController *nextWindow = [[[PreferencesController alloc] initWithNibName:@"Preferences" bundle:nil] autorelease];
UINavigationController* navController = [[[UINavigationController alloc] initWithRootViewController:nextWindow] autorelease];
[self presentModalViewController:navController animated:YES];

Затем из этого modalView я выдвигаю другой вид:

    MyController *nextWindow = [[[MyController alloc] initWithNibName:@"tmp" bundle:nil] autorelease];
    [self.navigationController pushViewController:nextWindow animated:YES];

В этом новом контроллере у меня есть viewDidLoad:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Borders";
    self.navigationController.navigationBarHidden = NO;
}

Элемент leftBarButtonItem не активен, я имею в виду, касаясь его, он не выделяется и не возвращается к предыдущему виду.

Мои представления отображаются в полноэкранном режиме, при этом [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; вызывается при инициализации приложения.

Фрейм навигационной панели составляет 0,0 320,44.
Фрейм суперпредставления навигационной панели составляет 0,0 320 480.
Рамка просмотра viewController составляет 0,0,33,436.

Я пытался вызвать viewDidLoad self.navigationController.navigationBar.userInteractionEnabled = YES; и self.navigationItem.leftBarButtonItem.enabled = YES; безрезультатно.

Что происходит?

РЕДАКТИРОВАТЬ:
Мой self.navigationController.navigationItem.backBarButtonItem имеет значение NIL. self.navigationController.navigationItem не является NIL

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Всякий раз, когда такого рода безразличия происходит со мной, это всегда из-за проблем с кадрированием.то есть суперпредставление NavigationController меньше, чем представление NavigationController.Я знаю, что вы говорите, что все настроено на полный экран, но я бы проверил, что на самом деле все полноэкранное, включив «clipsSubviews» для каждого представления в иерархии.

0 голосов
/ 22 марта 2011

Я нашел решение.Проблема была в том, что первый вид вызывался из оверлея, а не из сборщика.Сохранение ссылки на средство выбора в оверлее и вызов из него представления решает проблему:

Из оверлея:

[self.picker presentModalViewController:navController animated:YES];

работает

вместо:

[self presentModalViewController:navController animated:YES];
0 голосов
/ 20 марта 2011

У меня только что была эта проблема, я не уверен, почему это работает, но вместо этого:

UIBarButtonItem *backButton =
[[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                  style: UIBarButtonItemStyleBordered
                                 target:nil
                                 action:nil] autorelease];

self.navigationItem.leftBarButtonItem = backButton;

Я заменил вторую строку на

 self.navigationController.navigationItem.leftBarButtonItem = backButton;

Это работает длямне.

...