【问题标题】:SWRevealViewController project in iOSiOS 中的 SWRevealViewController 项目
【发布时间】:2015-11-02 23:11:48
【问题描述】:

注意:问题已解决。

故事来了。我在我的项目中使用 RevealViewController。我还隐藏了导航栏:

[self.navigationController setNavigationBarHidden];

我的项目如下图所示,“menuButton”在tabBarViewController中实现。

由于我的界面看起来隐藏了导航栏,所有的 tabViews (HomeViewController) 都不会按预期显示 menuButton 和 navigationBar。我也没有使用 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。我也尝试作为 UIBarButtonItem 来触发 @selector(revealToggle:) 但是当我尝试从 HomeViewController 触发按钮时,应用程序中没有任何反应。

不知道我将如何完成这项工作。还有其他想法或技巧吗?如果有请具体说明!问候

【问题讨论】:

  • 好吧,你有没有试过让初始视图控制器不是 SWRevealViewController?发生了什么?
  • 是的。我的初始视图控制器是 TabBarController。当我单击菜单按钮(在我的主视图控制器中)时,它不会加载表视图控制器。根本没有任何反应。我完全按照指南进行操作并查看了示例项目。唯一的区别是在我的项目中我没有使用 SWReveal 类作为初始视图控制器。所以我假设这就是问题所在。

标签: ios uibutton uinavigationbar uibarbuttonitem swrevealviewcontroller


【解决方案1】:

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

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

请注意,您可以将来自 SWRevealViewController 的手势添加到其内容视图控制器,这将改变导航视图控制器中使用的行为,但这是意料之中的,您仍然可以完全控制其行为。

编辑

我仍然不清楚您的应用程序的 UI 结构 - 当视图中的 VC 实际上是 HomeViewController 时,您似乎正试图在 SWRevealViewController 的实例上调用 revealToggle?当 SWVC 甚至不在视图中时,这将如何工作?

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

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

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

【讨论】:

【解决方案2】:

你的意思是这样吗?

这是可能的。您可以在 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;

对我来说,我的初始视图控制器是登录屏幕(显然我不需要在这里显示任何 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];

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 2017-07-11
      • 2018-01-04
      • 2014-07-18
      • 1970-01-01
      • 2015-03-19
      • 2017-11-30
      • 1970-01-01
      • 2014-02-08
      相关资源
      最近更新 更多