这里是故事.我在我的项目中使用RevealViewController.我也隐藏了导航栏:
[self.navigationController setNavigationBarHidden];
我的项目可以在下面的图片中看到,“menuButton”在tabBarViewController中实现.
由于导航栏由于我的界面外观而被隐藏,所以所有tabViews(HomeViewController)将不会显示menuButton和导航栏.我没有使用panGestureRecognizer来触发菜单.
这意味着我有一个问题,通过HomeViewController中的普通按钮触发菜单. menuButton-event放在tabBarViewController.m中:
_menuButton.target = self.revealViewController; _menuButton.action = @selector(revealToggle:);
所以我试图从HomeViewController调用一个方法来触发tabBarViewController中的按钮,如下所示:
HomeViewController.m
- (IBAction) onMenuClicked: (id)sender{ tabBar = [[tabBarViewController alloc] init]; [tabBar setupMenu]: }
tabBarViewController.m
-(void) setupMenu{ [_realMenuButton sendActionForControlEvents:UIControlEventTouchUpInside]; [_realMenuButton addTarget:self.revealViewController action:@selector(revealToggle:) UIControlEventTouchUpInside]; }
在这个例子中,我试图使realMenuButton和正常的UIButton. Ive也尝试作为一个UIBarButtonItem来触发@selector(revealToggle :)但是当我尝试从HomeViewController触发按钮时,应用程序中没有任何反应.
不知道我该如何做这个工作.任何其他想法或技巧?请具体如果是这样!问候
解决方法
SWRevealViewController只是一个UIViewController的子类,所以你可以在应用程序的任何一点使用它:
通过调用presentViewController:在某些时候动画.
>通过在导航堆栈等中使用它
请注意,您可以从SWRevealViewController添加手势到其内容视图控制器,这将改变导航视图控制器中使用的行为,但这是预期的,您仍然可以完全控制其行为.
编辑
您的应用程序的UI结构对我来说还不是很清楚 – 当VC在视图中是InView HomeViewController时,您似乎试图在SWRevealViewController的一个实例上调用revealToggle?当SWVC甚至不视觉时,这个工作怎么样?
我最好的猜测是你的UI结构应该如下:
TabBarController —>(root)UINavigationController —>(root)SWRevealViewController.
然后,在SWRevealViewController上,将HomeViewController设置为前视图控制器,将TableViewController设置为右视图或左视图控制器.