我有一个UITableViewController
UISearchDisplayController
(和UISearchBar
),其中包含UINavigationController
作为根元素。是否可以对其进行配置,以便UISearchBar
代替UINavigationBar
?我不认为隐藏导航栏会起作用,下一个屏幕(按下)需要它可见(这会产生一个奇怪的动画故障)。
我基本上会选择 App Store 搜索标签。
我上传了一个关于它现在看起来的截图:
答案 0 :(得分:6)
这是我的解决方案:
您不需要隐藏UINavigationBar,而是可以将UISearchBar合并到UINavigationBar中。
在YourClass.m文件中:
1.添加UISearchBar属性
2.将UISearchBar添加到viewDidLoad部分的NavigationItem中。
代码:
@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文件。只需在UINavigationBar中添加UISearchBar对象,并将UISearchBar的引用插座连接到File的Owner。 祝你好运!
答案 1 :(得分:4)
将自己指定为UINavigationController的委托并实现- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
。
然后使用传入的navigationController隐藏导航栏。
[navigationController setNavigationBarHidden:YES animated:animated]
编辑:想想看,最好将动画值传递给-setNavigationBarHidden:animated:
。代码已更新。
答案 2 :(得分:1)
我猜你可以通过将'navigationBarHidden'属性设置为true来隐藏导航栏。
[navigationController setNavigationBarHidden:YES animated:NO];
答案 3 :(得分:1)
在你正在推动的控制器的viewDidLoad方法中
[[self navigationController] setNavigationBarHidden:NO animated:YES];