我有一个TabBar应用程序,我也添加了一个UIButton,它会弹出一个菜单。
菜单按钮是这样添加到Tab Controller中的:
//TabBarViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.menuBtn = [UIButton buttonWithType:UIButtonTypeCustom];
menuBtn.frame = CGRectMake(285, 28, 24, 24);
[menuBtn setBackgroundImage:[UIImage imageNamed:@"menu.png"] forState:UIControlStateNormal];
[menuBtn addTarget:self action:@selector(showMenu:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.menuBtn];
}这可以很好地发挥作用,并产生以下结果:

我在tab控制器中有一个按钮,所以它显示在每个选项卡上。
这一切都很好,但是当我使用搜索栏时,菜单按钮就会成为障碍:

如何能够在搜索处于活动状态时隐藏菜单按钮?
我已经想出了如何检测搜索栏何时处于活动状态,但我在试图隐藏菜单按钮时遇到了困难。
//SearchViewController.m
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
TabBarViewController *vc = [[TabBarViewController alloc]init];
[vc.menuBtn setHidden:YES];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
TabBarViewController *vc = [[TabBarViewController alloc]init];
[vc.menuBtn setHidden:NO];
}我尝试过一些方法,但是没有什么能够隐藏菜单按钮。这是不可能的还是我遗漏了什么?
任何帮助都将不胜感激,谢谢
发布于 2014-10-19 06:49:22
正如rdelmar评论的那样:
您需要获得对您已经拥有的选项卡条控制器的引用,而不是创建一个带有alloc的新控制器。
目前,我正在做一个新的TabBarViewController,用这个:
TabBarViewController *vc = [[TabBarViewController alloc]init];相反,我需要使用引用。我可以通过使用'parentViewController‘来完成这个任务。
来自TabBarViewController的应用程序结构是:
因此,通过两次使用“parentViewController”,我能够引用TabBarViewController,然后隐藏menuBtn。
以下是对我起作用的原因:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
((TabBarViewController *)self.parentViewController.parentViewController).menuBtn.hidden = YES;
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
((TabBarViewController *)self.parentViewController.parentViewController).menuBtn.hidden = NO;
}https://stackoverflow.com/questions/26446678
复制相似问题