self.revealViewController 变为 nil 并且 SWRevealViewController 菜单在从某个 VC 转回 SWRevelViewController 后不显示

Posted

技术标签:

【中文标题】self.revealViewController 变为 nil 并且 SWRevealViewController 菜单在从某个 VC 转回 SWRevelViewController 后不显示【英文标题】:self.revealViewController becomes nil and SWRevealViewController Menu not showing after segue back to SWRevelViewController from a certain VC 【发布时间】:2015-06-20 07:06:45 【问题描述】:

我正在使用SWRevelViewController 框架并在编码时遇到了这个问题。基本上这是我的 VC 及其课程的列表: http://mnch.in/ubyB/3g4uqSwl(我的故事板图片)

问题是当用户登录UIVC_2 时,它会使用蓝色标记的segue 回到SWRevelVC。但是,当UITableVC 中的viewDidLoad 方法被调用时

SWRevealViewController *revealViewController = self.revealViewController;
NSLog(@"%@", [revealViewController description]);
if (revealViewController) 
    NSLog(@"hey");
    [self.sidebarButton setTarget: self.revealViewController];
    [self.sidebarButton setAction: @selector( revealToggle: )];
    [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];

self.revealViewController 变为 nil,因此侧边栏停止工作,因为它永远不会进入 if 语句并为侧边栏按钮设置目标。

但是,如果我首先登录用户并关闭应用程序,然后再次构建并运行应用程序,UITableVC 会直接显示(UIVC_1UIVC_2 不会弹出),并且在其viewDidLoad 方法,self.revealViewController 不为零,因此侧边栏在这种情况下有效。

谁能解释为什么会发生这种情况以及我应该如何解决它,以便当我从UIVC_2 转到SWRevealVC 时,self.revealViewController 不会是nil?这个问题我想了很久,还是没明白。非常感谢!

编辑: 这是一个类似的问题,也没有回答: Swift SWRevealViewController Menu not showing after segue back to certain page。 我的案例表明,即使您一直回到 SWRevealViewController,self.revealViewController 仍然没有初始化

【问题讨论】:

【参考方案1】:

其实没关系,我是愚蠢的,这确实有效,我犯的错误是我将 segue 从 UIVC_2 更改为 SWRevelVC,但我一直使用另一个 VC(我们称之为 UIVC_3)进行测试,并且 UIVC_3 的 segue 没有链接到SWRevealVC 而是导航控制器...

【讨论】:

以上是关于self.revealViewController 变为 nil 并且 SWRevealViewController 菜单在从某个 VC 转回 SWRevelViewController 后不显示的主要内容,如果未能解决你的问题,请参考以下文章

SWRevealViewController推送到实际的导航控制器

如何使用普通按钮而不是条形按钮项

如何在标签栏按钮点击上创建幻灯片菜单(swift)