![](/img/trans.png)
[英]How to add and open a nib as child viewcontroller progrmatically from UITabBarController
[英]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中应用程序的结构为:
因此,通过两次使用“ 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.