注意:问题已解决。
故事来了。我在我的项目中使用 RevealViewController。我还隐藏了导航栏:
[self.navigationController setNavigationBarHidden];
我的项目如下图所示,“menuButton”是在tabBarViewController中实现的。
由于我的界面外观导致 navigationBar 被隐藏,所有 tabViews (HomeViewController) 将不会按预期显示 menuButton 和 navigationBar。我也没有使用 panGestureRecognizer 来触发菜单。
这意味着我无法通过 HomeViewController 中的普通按钮触发菜单。 menuButton 事件位于 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];
}
在这个例子中,我试图制作真实的菜单按钮和普通的 UIButton。我也试过作为 UIBarButtonItem 来触发 @selector(revealToggle:) 但是当我尝试从 HomeViewController 触发按钮时应用程序没有任何反应。
不确定我将如何完成这项工作。还有其他想法或技巧吗?如有请具体说明!问候
最佳答案
是的,它仍然有效。 SWRevealViewController 只是 UIViewController 的子类,因此您可以在应用程序中的任何位置使用它:
- 通过在某个时刻调用
presentViewController:animated
。 - 通过在导航堆栈等中使用它。
请注意,您可以将 SWRevealViewController
中的手势添加到其内容 View Controller ,这将改变导航 View Controller 中使用的行为,但这是预料之中的,您仍然可以完全控制它的行为。
编辑
我仍然不清楚您的应用程序的 UI 结构 - 看起来您正试图在 VC 处于 View 中时在 SWRevealViewController
的实例上调用 revealToggle
实际上是 HomeViewController?当甚至看不到 SWVC 时,这将如何工作?
我最好的猜测是您的 UI 结构应该如下所示:
TabBarController --->(根)UINavigationController --->(根)SWRevealViewController。
然后,在您的 SWRevealViewController 上,将 HomeViewController 设置为前 View Controller ,将 TableViewController 设置为右 View Controller 或左 View Controller 。
关于ios - iOS 中的 SWRevealViewController 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31929706/