iOS中的SWRevealViewController项目

注意:问题解决了.

这里是故事.我在我的项目中使用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设置为右视图或左视图控制器.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...