在SWRevealViewController侧面菜单

时间:2016-02-22 21:56:54

标签: ios swift segue swrevealviewcontroller

我已经将SWRevealViewController实现到我的应用程序中,为我的应用程序提供了一个不错的侧边菜单。我应用程序的主(主)屏幕是TableViewController.swift - 这也是您可以访问侧边菜单的唯一地方。侧面菜单都很完美。这是一张图片来展示它的样子:

enter image description here

您可以在菜单中看到的5个选项是在tableView中创建的,我希望它们都链接到其他视图控制器。我目前使用他们在本侧面菜单的教程中显示的方法实现了这一点,即创建reveal view controller push controller的segue。一切正常。

问题

当您按下其中一个选项时,它会将新视图控制器显示为sw_front,因此,我无法访问主(主)屏幕。例如,VC链接到第一个选项' Films我想看到'只是一个普通的绿色VC。下图显示了在我按下该选项然后尝试返回后发生的情况:

enter image description here

所以你可以看到,前面出现的VC不再是我的主(主)屏幕了。

我想知道在那里我可以设置它,所以当你按侧面菜单中的一个选项时,它会打开侧面菜单顶部的新VC,所以当你关闭它时VC,它仍然显示侧面菜单打开,前面有Main(主页)屏幕。

我希望这是有道理的。请询问您是否需要查看我的任何代码。

1 个答案:

答案 0 :(得分:3)

我设法找到了解决方案!

  1. 我首先创建了5个新的视图控制器(侧面菜单中的每个选项都有一个)

  2. 然后,我通过创建“显示”segue将每个单元格链接到它的视图控制器。所以我的故事板现在看起来像这样:

  3. enter image description here

    1. 我为每个segue创建了一个segue标识符。
    2. 然后在我的sideMenu.swift文件中添加了以下内容:

      1. 创建变量以存储segue的标识符。

        // Mark:- Sets the side menu segue identifiers
        let smOption_One = "toFilmsIWantToSee"
        let smOption_Two = "toSearchForAnyFilm"
        let smOption_Three = "toMeetTheTeam"
        let smOption_Four = "toContactUs"
        let smOption_Five = "toTermsOfUse"
        
      2. 然后我添加了didSelectRowAtIndexPath方法,并为每个segue添加了performSegueWithIdentifier

        func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        
        self.performSegueWithIdentifier(smOption_One, sender: indexPath)
        self.performSegueWithIdentifier(smOption_Two, sender: indexPath)
        self.performSegueWithIdentifier(smOption_Three, sender: indexPath)
        self.performSegueWithIdentifier(smOption_Four, sender: indexPath)
        self.performSegueWithIdentifier(smOption_Five, sender: indexPath)
        
        }
        
      3. 最后,添加了prepareForSegue方法。在这个方法中,我检查了每个标识符,然后进行了destinationViewController

        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        
        if segue.identifier == smOption_One {
        
            segue.destinationViewController as! FilmsIWantToSeeViewController
        
        } else if segue.identifier == smOption_Two {
        
            segue.destinationViewController as! SearchForAnyFilmViewController
        
        } else if segue.identifier == smOption_Three {
        
            segue.destinationViewController as! MeetTheTeamViewController
        
        } else if segue.identifier == smOption_Four {
        
            segue.destinationViewController as! ContactUsViewController
        
        } else if segue.identifier == smOption_Five {
        
            segue.destinationViewController as! TermsOfUseViewController
        
        }
        
        }
        
      4. 这完美地为正确的视图控制器创建了一个segue,具体取决于我按下的选项,并将其显示在侧面菜单的顶部,所以当我关闭该视图控制器时,它仍然显示侧面菜单,因此允许我回到主屏幕。

        不确定是否有更简单的方法可以做到这一点,但它确实可以解决我需要它的方式。使用Swift 2在Xcode 7.2中编写。