UISavchBar вместо UINavigationController UINavigationBar - PullRequest
3 голосов
/ 03 февраля 2011

У меня есть UITableViewController с UISearchDisplayControllerUISearchBar), который содержится в UINavigationController в качестве корневого элемента.Можно ли настроить его таким образом, чтобы вместо UINavigationBar отображался UISearchBar?Я не думаю, что скрытие панели навигации будет работать, а следующий экран (нажатый) требует, чтобы он был виден (и это создаст странный анимационный глюк).например, App Store вкладка поиска.

Я загрузил примеры скриншотов того, как это выглядит сейчас:

Default Configuration Selected Configuration

Ответы [ 4 ]

6 голосов
/ 22 июня 2012

Вот мое решение:
Вам не нужно скрывать UINavigationBar, вместо этого вы можете объединить UISearchBar с UINavigationBar.

В файле YourClass.m:
1. добавить свойство UISearchBar
2. добавьте UISearchBar в NavigationItem в разделе viewDidLoad. код:

@interface YourClass ()
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
@end

@implementation YourClass
- (void)viewDidLoad 
{
  [super viewDidLoad];

  // Reveal cancel button in UISearchBar.
  searchBar.showsCancelButton = YES;

  // Add UISearchBar as titleView of the UINavigationBar.
  self.navigationItem.titleView = searchBar;
}

последнее, не забудьте отредактировать файл .xib. Просто добавьте объект UISearchBar прямо вниз UINavigationBar и подключите выходы ссылок UISearchBar к владельцу файла. Удачи!

4 голосов
/ 18 февраля 2011

Назначьте себя в качестве делегата UINavigationController и внедрите - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated.

Затем используйте переданный in navigationController, чтобы скрыть панель навигации.[navigationController setNavigationBarHidden:YES animated:animated]

Редактировать: Если подумать, было бы лучше передать анимированное значение в -setNavigationBarHidden:animated:Код обновлен.

1 голос
/ 09 февраля 2011

В методе viewDidLoad контроллера вы нажимаете

[[self navigationController] setNavigationBarHidden:NO animated:YES];
1 голос
/ 03 февраля 2011

Полагаю, вы можете скрыть панель навигации, установив для свойства navigationBarHidden значение true.

[navigationController setNavigationBarHidden:YES animated:NO];
...