我有一个应用程序,它使用 JASidePanel 来显示类似 facebook 的侧边菜单。它工作得很好,我可以展示我的左右面板。但是我需要左右面板是通用的,即如果我从当前的中心面板视图控制器切换到一个新的,比如细节视图控制器,我仍然需要能够显示我的左右面板。
考虑使用 MainVC 和 DetailVC 的场景
场景一:
[left]-[center]-[right]
|
[MainVC]
场景 2:转到下一个视图控制器时
[MainVC]
[left]-[center]-[right]
|
[DetailVC]
场景 3:转到另一个视图控制器时
[MainVC]
[DetailVC]
[left]-[center]-[right]
|
[MoreDetailVC]
DetailVC 被推送并“放在”中央面板的顶部,而 MainVC 仍然在堆栈的某个位置。我需要转场和推动,因为
- 我使用故事板
- 在其他视图控制器中,我调用 popToRootViewController 并且我需要 MainVC 作为 rootViewController
我尝试过从 MainVC 到 DetailVC 的转场
[self performSegueWithIdentifier...];
在 DetailVC 中,我将中心面板设置为 self ,如下所示:
//in view will appear
sidePanelViewController.centerPanel = self;
这会为我的应用程序产生黑屏。我认为发生这种情况是因为中心面板的 setter 方法也加载了视图控制器,但视图已经加载,所以它有点像双倍的 segue。如果我删除上面的行,detailVC 显示良好,但我无法访问左右面板。
我看过这个, 这个和 这个,但没有给出答案。我认为 JASidePanel 可能无法做到这一点,我正在考虑使用其他资源。
编辑: 我没有在 MainVC 上执行 segue,而是尝试直接在此处设置中心面板,如下所示:
sidePanelViewController.centerPanel = [self.storyboard instantiateVCWithIdentifier:@"detailVC"];
它有效,它不是通过segue进入DetailVC,所以没有动画,但可以访问左右面板。问题是我无法使用 popToRootViewController 返回 mainVC。(我需要使用 popToRootViewController 立即返回到 mainVC,因为可以有很多转换,就像一个主页按钮)