2011-02-03 61 views
3

的我有被包含在UINavigationController作为根元素与UISearchDisplayController(和UISearchBar)一个UITableViewController。是否可以配置它,以便UISearchBar代替UINavigationBar?我不认为隐藏导航栏会工作,下一个屏幕(推送)要求它是可见的(这将创建一个奇怪的动画故障)。的UISearchBar到位的UINavigationController UINavigationBar的

我基本上去为喜欢App Store的搜索标签的屏幕。

我上传它现在的样子的样本截图:

Default Configuration Selected Configuration

回答

4

将自己指定为UINavigationController的的委托,实施- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

然后可使用navigationController传递到隐藏导航栏。 [navigationController setNavigationBarHidden:YES animated:animated]

编辑:试想想它,这将是更好的动画值传递到-setNavigationBarHidden:animated:为好。代码已更新。

1

我想你可以通过“navigationBarHidden”属性设置为true隐藏你的导航栏。

[navigationController setNavigationBarHidden:YES animated:NO]; 
+0

然后我遇到问题推动下一个视图控制器时,(即,它不具有导航栏)。如果我尝试重新启用它,我会得到暂时空白的导航栏。 – 2011-02-04 19:51:51

1

在控制器的viewDidLoad方法你是推

[[self navigationController] setNavigationBarHidden:NO animated:YES]; 
+0

看起来像是同样的问题。 – 2011-02-17 21:51:36

6

这里是我的解决方案:
你不需要隐藏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文件。只需在UINavigationBar下面添加UISearchBar对象,并将UISearchBar的引用插座连接到文件的所有者。 祝你好运!

相关问题