我正在构建一个由UINavigationController控制多个屏幕的大型分层iPhone应用程序。其中一个屏幕能够以两种不同的格式显示内容(我使用IB创建的UITabBar在它们之间切换),并且我构建了一个视图,该视图添加了基于活动主体的子视图(从nib文件加载)标签。从子视图的控制器中隐藏超级视图控制器的UINavigatonBar?
这些子视图中的每一个都包含一个搜索栏,当它被点击时需要将导航栏推开。导航栏只能从子视图的superview控制器访问,所以我已经向每个子视图的控制器添加了superview的控制器类的前向声明。当子视图被加载时,其“superViewController”属性被设置。
通常,每个搜索栏会根据需要自动隐藏导航栏,但我需要自己实现此功能,因为栏位于搜索栏上方的视图中。
-(void)hideNavBar {
[self.navigationController setNavigationBarHidden:TRUE animated:TRUE];
}
和我也曾尝试:我曾尝试通过在
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView
方法,其中 “hideNavBar” 定义使用
[self.superViewController hideNavBar];
在superViewController.m如下这样做直接隐藏吧
[self.superViewController.navigationController setNavigationBarHidden:TRUE animated:TRUE];
在这两种情况下,酒吧都没有任何改变。我必须告诉导航栏进行更新吗?有没有更好的方法来实现我想要的功能?
我知道向前声明是否正常工作,因为我可以使用预先
NewViewController *newViewController = [[NewViewController alloc] initWithNibName:@"NewView" bundle:nil];
[self.superViewController.navigationController pushViewController:newViewController animated:YES];
[newViewController release];
由于推新视图到navigationViewController, 朱利安Ceipek
如果它的事项,导航栏被设置为半透明的,以便子视图在栏下方。
和@cone你有问题的答案吗?如何解决这个问题呢?你可以帮我吗?这是我的问题: - http://stackoverflow.com/questions/6381161/how-to-hide-superview-navigationbar-in-subview-in-ipad – 2011-06-17 07:33:34