【问题标题】:Hide navigation bar in view controller pushed from UISearchDisplayController在从 UISearchDisplayController 推送的视图控制器中隐藏导航栏
【发布时间】:2015-04-30 04:52:35
【问题描述】:

我在UINavigationController 中有一个UIViewController(我们称之为VC0)。 VC0 使用UISearchDisplayControllerUITableView 中显示搜索结果。用户从搜索结果中选择一个表格单元格后,它会推送另一个UIViewController(称为VC1)。

VC0VC1 中,我已将 navigationBarHidden 设置为 YES。但是,当我选择表格单元格并按下 VC1 时,我仍然看到 VC1 顶部的导航栏带有返回按钮到 VC0 .

如何在VC1中永久隐藏导航栏?

更新:

如果我在viewDidAppear: 中输入以下行,导航栏就会消失,但在隐藏之前它仍然可见。

self.navigationController.navigationBarHidden = YES;

但如果我把它放在viewDidLoadviewWillAppear: 中,它就不起作用了。有什么原因吗?

【问题讨论】:

  • 你想在两个 ViewController 上隐藏 Navigationbar?
  • @VivekMolkar 是的。我可以将其隐藏在 VC0 中,但不能隐藏在 VC1 中。
  • VC1你推的怎么样了?推动 Segue?
  • @VivekMolkar 不,通过导航控制器。 [self.navigationController pushViewController:VC1 animated:YES];

标签: ios objective-c uiviewcontroller uisearchbar uisearchdisplaycontroller


【解决方案1】:

制作一个简单的 ViewController 作为名称 BaseViewController。 并使您的 VC0 和 VC1 都派生自 BaseViewController。只需在 BaseViewController 中将 navigationBarHidden 设置为 YES

这将通过简单的一行代码适用于VC0和VC1。

  1. @interface BaseViewController : UIViewController

  2. @interface VC0 : BaseViewController

  3. @interface VC1 : BaseViewController

喜欢这个

和BaseViewController的方法

 - (void)viewDidLoad
 {
    [super viewDidLoad];
    self.navigationController.navigationBarHidden=YES;
 }

【讨论】:

  • 没有别的办法了吗?我最好不想改变我的视图控制器的结构。
  • 那么你必须在每个 viewControllers viewWillAppear 方法中写上你的self.navigationController.navigationBarHidden=YES;
  • 不行,VC1里我还是看到导航栏。
猜你喜欢
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
相关资源
最近更新 更多