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
在我的应用中,我使用 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