繁体   English   中英

从子ViewController在UITabBarController中添加了隐藏UIButton

[英]Hide UIButton added in UITabBarController from child ViewController

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

这是将菜单按钮添加到选项卡控制器的方式:

//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];
}

这可以正常工作并产生以下结果:

该按钮可见,并且在右上角起作用。

我在选项卡栏控制器中有该按钮,因此它显示在每个选项卡上。

一切正常,但是当我使用搜索栏时,菜单按钮变成了问题:

按钮现在覆盖取消按钮。

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

我已经找到了如何检测搜索栏何时处于活动状态的方法,但是尝试隐藏菜单按钮时遇到了麻烦。

//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];
}

我尝试了几种方法,但是没有任何方法可以隐藏菜单按钮。 这是不可能的,还是我错过了什么?

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

正如rdelmar所说:

您需要获得对现有标签栏控制器的引用,而不是使用alloc init创建一个新的引用。

目前,我正在制作一个新的TabBarViewController,它是:

TabBarViewController *vc = [[TabBarViewController alloc]init];

相反,我需要使用参考。 我能够通过使用“ parentViewController”来做到这一点。

TabBarViewController中应用程序的结构为:

  1. TabBarViewController
  2. SearchNavigationController
  3. SearchViewController

因此,通过两次使用“ 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM