Я создаю большое иерархическое приложение для iPhone с несколькими экранами, управляемыми UINavigationController.Один из этих экранов может отображать контент в двух разных форматах (я переключаюсь между ними с помощью UITabBar, созданного IB), и я построил этот экран с видом, который добавляет подпредставление (загруженное из файла пера) на основе активногоtab.
Каждое из этих подпредставлений содержит панель поиска, которая должна сдвигать панель навигации в сторону при ее нажатии.Панель навигации доступна только из контроллера суперпредставления подпредставлений, поэтому я добавил предварительное объявление класса контроллера суперпредставления в контроллер каждого подпредставления.При загрузке подпредставления устанавливается его свойство superViewController.
Обычно каждая панель поиска автоматически скрывает панель навигации по мере необходимости, но мне нужно реализовать эту функцию самостоятельно, поскольку панель находится в представлении выше.панели поиска.Я попытался сделать это с помощью
[self.superViewController hideNavBar];
в методе
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
, где «hideNavBar» определяется в superViewController.m следующим образом:
-(void)hideNavBar {
[self.navigationController setNavigationBarHidden:TRUE animated:TRUE];
}
и я также попытался скрыть панель непосредственно с помощью
[self.superViewController.navigationController setNavigationBarHidden:TRUE animated:TRUE];
В обоих случаях планка не изменилась никоим образом.Должен ли я сказать навигационной панели как-то обновить?Есть ли лучший способ реализовать желаемую функциональность?
Я знаю, что прямое объявление работает правильно, потому что я могу выдвинуть новый взгляд на navigationViewController, используя
NewViewController *newViewController = [[NewViewController alloc] initWithNibName:@"NewView" bundle:nil];
[self.superViewController.navigationController pushViewController:newViewController animated:YES];
[newViewController release];
Заранее спасибо, Джулиан Цейпек
В случае, если это имеет значение, панель навигации устанавливается полупрозрачной, так что подпредставления находятся под панелью.