在 SWRevealViewController 侧边菜单的顶部添加 ViewController
Segue a ViewController over the top of SWRevealViewController side menu
我已经在我的应用程序中实现了 SWRevealViewController,为我的应用程序提供了一个漂亮的侧边菜单。该应用程序的主(主)屏幕是 TableViewController.swift
- 这也是您可以从中访问侧边菜单的唯一位置。侧面菜单一切正常。这是一张展示它的样子的图片:
您可以在菜单中看到的 5 个选项是在 tableView
中创建的,我希望它们全部 link 到其他视图控制器。我目前已经使用他们在该侧边菜单的教程中展示的方法实现了这一点,即创建 reveal view controller push controller
的 segue。这一切都有效。
问题
当您按下其中一个选项时,它会将新的视图控制器显示为 sw_front
,因此,我无法访问主(主)屏幕。例如,VC linked 到第一个选项 'Films I want to see' 只是一个普通的绿色 VC。下图显示了我按下该选项然后尝试返回后发生的情况:
所以你可以看到,出现在前面的VC不再是我的主(主页)屏幕。
我想知道我是否可以设置它,这样当您按下侧边菜单中的一个选项时,它会在侧边菜单顶部打开新的 VC,所以当你关闭那个 VC,它仍然显示侧边菜单打开,主(主)屏幕在前面。
我希望这是有道理的。请询问您是否需要查看我的任何代码。
我设法找到了解决方案!
我首先创建了 5 个新的视图控制器(侧边菜单中的每个选项一个)
然后我通过创建 'Show' segue 将每个单元格链接到它的视图控制器。所以我的故事板现在看起来像这样:
- 我为每个转场创建了一个转场标识符。
然后在我的 sideMenu.swift
文件中,我添加了以下内容:
创建变量来存储 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"
然后我添加了 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)
}
最后,添加了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
}
}
根据我按下的选项,这完美地创建了一个到正确视图控制器的 segue,并将其显示在侧边菜单的顶部,所以当我关闭该视图控制器时,它仍然显示侧边菜单,因此允许我回到我的主屏幕。
不确定是否有更简单的方法来执行此操作,但它确实可以满足我的需要。写在 Xcode 7.2 和 Swift 2.
我已经在我的应用程序中实现了 SWRevealViewController,为我的应用程序提供了一个漂亮的侧边菜单。该应用程序的主(主)屏幕是 TableViewController.swift
- 这也是您可以从中访问侧边菜单的唯一位置。侧面菜单一切正常。这是一张展示它的样子的图片:
您可以在菜单中看到的 5 个选项是在 tableView
中创建的,我希望它们全部 link 到其他视图控制器。我目前已经使用他们在该侧边菜单的教程中展示的方法实现了这一点,即创建 reveal view controller push controller
的 segue。这一切都有效。
问题
当您按下其中一个选项时,它会将新的视图控制器显示为 sw_front
,因此,我无法访问主(主)屏幕。例如,VC linked 到第一个选项 'Films I want to see' 只是一个普通的绿色 VC。下图显示了我按下该选项然后尝试返回后发生的情况:
所以你可以看到,出现在前面的VC不再是我的主(主页)屏幕。
我想知道我是否可以设置它,这样当您按下侧边菜单中的一个选项时,它会在侧边菜单顶部打开新的 VC,所以当你关闭那个 VC,它仍然显示侧边菜单打开,主(主)屏幕在前面。
我希望这是有道理的。请询问您是否需要查看我的任何代码。
我设法找到了解决方案!
我首先创建了 5 个新的视图控制器(侧边菜单中的每个选项一个)
然后我通过创建 'Show' segue 将每个单元格链接到它的视图控制器。所以我的故事板现在看起来像这样:
- 我为每个转场创建了一个转场标识符。
然后在我的 sideMenu.swift
文件中,我添加了以下内容:
创建变量来存储 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"
然后我添加了
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) }
最后,添加了
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 } }
根据我按下的选项,这完美地创建了一个到正确视图控制器的 segue,并将其显示在侧边菜单的顶部,所以当我关闭该视图控制器时,它仍然显示侧边菜单,因此允许我回到我的主屏幕。
不确定是否有更简单的方法来执行此操作,但它确实可以满足我的需要。写在 Xcode 7.2 和 Swift 2.