SWRevealViewController 和其他视图控制器

SWRevealViewController and other view controllers

在我的应用中,我使用 SWRevealViewController 作为侧边菜单,并且我已经正确设置了它。我的问题是,从一个有侧边菜单的视图控制器,我有一个 segue 去另一个不使用 SWRevealViewController 的视图控制器。然后返回到 SWRevealViewController。 (测验控制器)。由于某种原因,菜单按钮停止显示菜单。这是正在发生的事情:

(画质不好,用quicktime录制,在线转gif)

这是我的故事板布局:

测验控制器的连接是推送。

如何让按钮起作用?

我刚才想出了答案。您所要做的就是为您的原始控制器创建一个 unwind segue。如果您不知道该怎么做,请继续。

  • 将展开方法添加到您的原始控制器

我的控制器叫做QuizViewController,你的可能不一样。

// In QuizViewController.m
...
- (void)unwindToQuiz:(UIStoryboardSegue *)segue
{
    // Get data from sender by segue.sourceViewController
}

这个方法会在segue发生时被调用,把代码放在这里类似于prepareForSegue方法。

  • 接下来在故事板中创建 segue

在控制器中,您从视图控制器中按下右键单击拖动 (control-click) 以退出,然后 select 您的 -unwindToQuiz 方法。

现在 select 从侧边栏进行转场,然后向转场添加标识符。

**提示:如果您不想以编程方式启动 segue,请从 UI 元素(如 UIButton)拖动并拖动以退出。不需要标识符)。

要启动 segue,请执行 `[self performSegueWithIdentifier:@"yourIdentfier" sender:self];

大功告成!它不适用于 push 因为 revealViewController 属性 变为 nil