首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从子UIButton隐藏在UITabBarController中添加的ViewController

从子UIButton隐藏在UITabBarController中添加的ViewController
EN

Stack Overflow用户
提问于 2014-10-19 02:28:52
回答 1查看 188关注 0票数 0

我有一个TabBar应用程序,我也添加了一个UIButton,它会弹出一个菜单。

菜单按钮是这样添加到Tab Controller中的:

代码语言:javascript
复制
//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控制器中有一个按钮,所以它显示在每个选项卡上。

这一切都很好,但是当我使用搜索栏时,菜单按钮就会成为障碍:

如何能够在搜索处于活动状态时隐藏菜单按钮?

我已经想出了如何检测搜索栏何时处于活动状态,但我在试图隐藏菜单按钮时遇到了困难。

代码语言:javascript
复制
//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];
}

我尝试过一些方法,但是没有什么能够隐藏菜单按钮。这是不可能的还是我遗漏了什么?

任何帮助都将不胜感激,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-19 06:49:22

正如rdelmar评论的那样:

您需要获得对您已经拥有的选项卡条控制器的引用,而不是创建一个带有alloc的新控制器。

目前,我正在做一个新的TabBarViewController,用这个:

代码语言:javascript
复制
TabBarViewController *vc = [[TabBarViewController alloc]init];

相反,我需要使用引用。我可以通过使用'parentViewController‘来完成这个任务。

来自TabBarViewController的应用程序结构是:

  1. TabBarViewController
  2. SearchNavigationController
  3. SearchViewController

因此,通过两次使用“parentViewController”,我能够引用TabBarViewController,然后隐藏menuBtn。

以下是对我起作用的原因:

代码语言:javascript
复制
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
    ((TabBarViewController *)self.parentViewController.parentViewController).menuBtn.hidden = YES;
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    ((TabBarViewController *)self.parentViewController.parentViewController).menuBtn.hidden = NO;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26446678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档