如何解决在子视图的控制器中隐藏超级视图控制器的UINavigatonBar?
| 我正在构建一个大型的分层iPhone应用程序,它具有由UINavigationController控制的多个屏幕。这些屏幕之一能够以两种不同的格式显示内容(我使用IB创建的UITabBar在它们之间切换),并且我在该屏幕上构建了一个视图,该视图添加了一个基于活动窗口的子视图(从nib文件加载)。标签。 这些子视图中的每个子视图都包含一个搜索栏,当点击它时,需要将导航栏推开。只能从子视图的超级视图的控制器访问导航栏,因此我向每个子视图的控制器添加了超级视图的控制器类的前向声明。加载子视图时,将设置其\“ superViewController \”属性。 通常,每个搜索栏都会根据需要自动隐藏导航栏,但是我需要自己实现此功能,因为该栏位于搜索栏上方的视图中。我尝试通过使用[self.superViewController hideNavBar];
在里面
- (void)searchdisplayController:(UISearchdisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
方法,其中\“ hideNavBar \”在superViewController.m中的定义如下:
-(void)hideNavBar {
[self.navigationController setNavigationBarHidden:TRUE animated:TRUE];
}
我也尝试过直接用
[self.superViewController.navigationController setNavigationBarHidden:TRUE animated:TRUE];
在这两种情况下,条形都没有任何变化。我是否必须告诉导航栏以某种方式进行更新?有没有更好的方法来实现我想要的功能?
我知道前向声明工作正常,因为我可以使用来将新视图推入navigationViewController
NewViewController *newViewController = [[NewViewController alloc] initWithNibName:@\"NewView\" bundle:nil];
[self.superViewController.navigationController pushViewController:newViewController animated:YES];
[newViewController release];
提前致谢,
朱利安·塞佩克(Julian Ceipek)
如果很重要,则将导航栏设置为半透明,以使子视图位于该栏的下方。
解决方法
您是否尝试过使用模态视图控制器?根据每个选择,如果将模式视图控制器推到视图上,它将自动隐藏导航栏。
http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html
本质上,它是用来临时接收用户数据的屏幕。如果实现此功能,它将进入视图时自动隐藏导航栏,因为它由呈现它的视图控制器所拥有,并且没有推送到导航控制器堆栈中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。