У меня очень странная проблема с UINavigationController.
Я нашел очень похожий вопрос здесь:
UINavigationController не отображает элементы UINavigationBar
но решение было связано с тем, что парень добавил категорию в NSMutableArray, а я ничего такого не делаю.
Короче говоря, проблема в следующем: у меня есть контроллер навигации, и я помещаю на него несколько контроллеров представления. Затем, когда нажимается кнопка «назад», контроллер представления отключается, но соответствующий элемент навигации - нет. Если я снова нажму, то элемент навигации всплывет.
Кроме того, это происходит только при использовании кнопки «Назад» на панели навигации контроллера навигации. Если я вызываю popViewController явно (например, при нажатии кнопки), он работает как положено.
И это происходит только на моем iPad с операционной системой 3.2, но не на iPod Touch с операционной системой 3.0 или на симуляторе.
Я пытался изолировать проблему в отдельном проекте от остальной части моего приложения, чтобы я мог поэкспериментировать с ним, но не могу воспроизвести его, хотя это происходит в 100% случаев на определенных видах в моем приложении.
Я знаю, что этой информации недостаточно, чтобы получить конкретный ответ, но я просто хотел узнать, слышал ли кто-нибудь когда-нибудь о контроллере навигации, который не выдает навигационные элементы, как ожидалось, просто чтобы я мог иметь некоторое представление о том, где искать следующий.
Вот пример кода, который я использую для продвижения контроллера представления, он довольно прост, я не пытаюсь сделать с ним ничего особенного:
// pushing a view controller from a button press (set up with interface builder)
- (IBAction) tappedExtras
{
ExtrasViewController *controller = [[ExtrasViewController alloc] initWithNibName:@"ExtrasViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
примечание: в этом примере я использую пользовательский класс контроллера представления с именем ExtrasViewController, но проблема возникла с любым видом контроллера представления, который я пробовал.
А вот фрагмент кода, используемый для явного вызова контроллера представления, также запускаемый нажатием кнопки, настроенной с помощью конструктора интерфейса:
- (IBAction) cancelChanges
{
userCancelled = YES;
[self.navigationController popViewControllerAnimated:YES];
}
это работает отлично (явно отображает контроллер представления), но на точно таком же контроллере представления, если вместо нажатия кнопки, настроенной с помощью построителя интерфейса, нажать кнопку «Назад» на панели навигации, элемент навигации будет отображаться неправильно.