setNavigationBarHidden:YES不能与searchDisplayController一起使用

时间:2012-01-21 03:59:59

标签: iphone xcode uisearchdisplaycontroller

我正在使用以下代码在detailViewController(我的第二个视图)中隐藏我的navigationBar, 当我从MasterViewController(我的第一个视图)中点击任何一个对象时,它工作得很好。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];  
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

但是,当我使用searchDisplayController过滤masterViewController中的表列表时 并从结果中点击任何对象,detailView中的navigationBar不会被隐藏...

如果我使用searchDisplayController,是否需要做额外的工作来隐藏navigationBar?

对于Debug,我在setNavigationBarHidden行上设置了断点:YES,即使是 我通过搜索结果转到detailViewController,应用程序命中行..

4 个答案:

答案 0 :(得分:13)

你shuold put [self.navigationController setNavigationBarHidden:YES];在viewWillLayoutSubviews function.like this:

- (void) viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    [self.navigationController setNavigationBarHidden:YES];
}

它有效。

答案 1 :(得分:0)

如果要隐藏导航栏,请在MainWindow xib中取消选中导航控制器的“显示导航栏”属性。

这将隐藏整个项目中的导航栏。如果要在任何控制器中显示导航栏,请在该控制器的ViewDidLoad方法中使用NavigationBar Hidden = NO。

答案 2 :(得分:0)

你应该以某种方式破解搜索显示控制器以隐藏其内置的navigationBar。

这是答案:

https://stackoverflow.com/a/6337037/1348121

答案 3 :(得分:0)

- (void) viewWillLayoutSubviews

导致布局问题,所以我使用下面的代码。对我来说很好。

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO];
}