iOS中的SWRevealViewController项目

use*_*618 13 uinavigationbar uibutton uibarbuttonitem ios swrevealviewcontroller

注意:问题解决了.

这是故事.我在我的项目中使用RevealViewController.我也隐藏了navigationBars:

[self.navigationController setNavigationBarHidden];
Run Code Online (Sandbox Code Playgroud)

我的项目可以在下面的图片中看到," menuButton "在tabBarViewController中实现.

在此输入图像描述

由于我的界面外观导致navigationBar被隐藏,所有tabViews(HomeViewController)都不会显示menuButton和navigationBar.我没有使用panGestureRecognizer来触发菜单.

这意味着我有问题通过HomeViewController中的普通按钮触发菜单.menuButton事件放在tabBarViewController.m中:

_menuButton.target = self.revealViewController;
_menuButton.action = @selector(revealToggle:);
Run Code Online (Sandbox Code Playgroud)

所以我试着从HomeViewController调用一个方法来激活tabBarViewController中的按钮,如下所示:

HomeViewController.m

- (IBAction) onMenuClicked: (id)sender{

tabBar = [[tabBarViewController alloc] init];
[tabBar setupMenu]:
}
Run Code Online (Sandbox Code Playgroud)

tabBarViewController.m

-(void) setupMenu{

[_realMenuButton sendActionForControlEvents:UIControlEventTouchUpInside];
[_realMenuButton addTarget:self.revealViewController action:@selector(revealToggle:) UIControlEventTouchUpInside];
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我尝试制作realMenuButton和普通的UIButton.香港专业教育学院还试图为刚的UIBarButtonItem触发@selector(revealToggle :)但是什么也没有发生在应用程序中,当我尝试触发来自HomeViewController按钮.

不知道我将如何使这项工作.还有其他想法或伎俩吗?如果有,请具体说明!问候

Vin*_*ath 7

是的,它仍然有效.SWRevealViewController只是UIViewController的子类,因此您可以在应用程序的任何位置使用它:

  1. 通过presentViewController:animated在某个时候打电话.
  2. 通过在导航堆栈等中使用它

请注意,您可以将手势添加SWRevealViewController到其内容视图控制器,这将改变导航视图控制器中使用的行为,但这是预期的,并且您仍然可以完全控制其行为.

编辑

您的应用程序的UI结构对我来说仍然不明确 - 看起来您正试图调用revealToggle一个实例,SWRevealViewController当时视图中的VC实际上是HomeViewController?当SWVC甚至不在视野中时,它会如何工作?

我最好的猜测是你的UI结构应该如下:

TabBarController --->(root)UINavigationController --->(root)SWRevealViewController.

然后,在SWRevealViewController上,将HomeViewController设置为前视图控制器,将TableViewController设置为右视图控制器或左视图控制器.


One*_*ven 6

你的意思是这样的吗?

带菜单按钮的tabbar控制器?

有可能的.你可以在tabBarController.m中设置菜单按钮,如下所示:

UIBarButtonItem *menu = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu.png"] style:UIBarButtonItemStylePlain target:revealController action:@selector(revealToggle:)];

self.navigationItem.leftBarButtonItem = menu;
self.delegate = self;
Run Code Online (Sandbox Code Playgroud)

对我来说,我的初始视图控制器是登录屏幕(显然我不需要在这里透露任何VC ......).然后当用户点击登录按钮时,

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:yourRootVC];
LeftMenuViewController *leftMenuVC = [[LeftMenuViewController alloc]init];
SWRevealViewController *revealController = [[SWRevealViewController alloc]initWithRearViewController:leftMenuVC frontViewController:nav];
revealController.delegate = self;
[self presentViewController:revealController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)


Vit*_*nko 4

我已经尝试过了,它应该可以正常工作。即使它不是初始视图控制器