Iphone 如何使用可互换的中心面板实现JASidePanel?

Iphone 如何使用可互换的中心面板实现JASidePanel?,iphone,ios,objective-c,Iphone,Ios,Objective C,我有一个应用程序,使用JASidePanel显示类似facebook的侧菜单。它的工作非常好,我可以显示我的左面板和右面板。但我需要左面板和右面板是通用的,也就是说,如果我从当前的中心面板视图控制器切换到一个新的,比如说细节视图控制器,我仍然需要能够显示我的左面板和右面板 考虑使用MainVC和DetailVC的这个场景 场景1: [left]-[center]-[right] | [MainVC] 场景2:转到下一个视图控制器时 [MainVC

我有一个应用程序,使用JASidePanel显示类似facebook的侧菜单。它的工作非常好,我可以显示我的左面板和右面板。但我需要左面板和右面板是通用的,也就是说,如果我从当前的中心面板视图控制器切换到一个新的,比如说细节视图控制器,我仍然需要能够显示我的左面板和右面板

考虑使用MainVC和DetailVC的这个场景

场景1:

[left]-[center]-[right]
          |
       [MainVC]
场景2:转到下一个视图控制器时

       [MainVC]

[left]-[center]-[right]
          |
      [DetailVC]
       [MainVC]
      [DetailVC]

[left]-[center]-[right]
          |
    [MoreDetailVC]
场景3:转到另一个视图控制器时

       [MainVC]

[left]-[center]-[right]
          |
      [DetailVC]
       [MainVC]
      [DetailVC]

[left]-[center]-[right]
          |
    [MoreDetailVC]
DetailVC被推到中间面板的“顶部”,而MainVC仍然在堆栈的某个地方。我需要赛格和推力,因为

  • 我使用故事板
  • 在其他视图控制器中,我调用popToRootViewController,我需要MainVC作为rootViewController
  • 我试过从MainVC到DetailVC执行一个序列

    [self performSegueWithIdentifier...];
    
    在DetailVC中,我将中心面板设置为self-like,如下所示:

    //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,因为可能会有很多转换,就像主页按钮一样)

    我没有执行到下一个中心视图控制器的转换,而是删除了所有的转换并使用了:

    sidePanelViewController.centerPanel = 
        [self.storyboard instantiateVCWithIdentifier:@"detailVC"];
    
    这会改变中心面板,但没有推送动画,所以这有点悲哀。然后,我将主视图控制器的指针保存在可访问的全局位置,比如应用程序委托。然后,当我按下home(主页)按钮时,我像这样返回主页:

    sidePanelViewController.centerPanel = appDelegate.mainViewControllerPointer;
    

    这会将我返回到主视图控制器,使其处于我离开它的状态。如果我用[self.storyboard instantiate…]实例化了一个新的视图控制器,则主视图控制器作为中心面板放置,没有留下一些表单数据,这不是我想要的,而不是执行到下一个中心视图控制器的分段,我删除了所有分段并使用:

    sidePanelViewController.centerPanel = 
        [self.storyboard instantiateVCWithIdentifier:@"detailVC"];
    
    这会改变中心面板,但没有推送动画,所以这有点悲哀。然后,我将主视图控制器的指针保存在可访问的全局位置,比如应用程序委托。然后,当我按下home(主页)按钮时,我像这样返回主页:

    sidePanelViewController.centerPanel = appDelegate.mainViewControllerPointer;
    
    这会将我返回到主视图控制器,使其处于我离开它的状态。若我用[self.storyboard instantiate…]实例化一个新的视图控制器,一个主视图控制器会被放在中心面板上,并没有留下一些表单数据,这不是我想要的