【问题标题】:Manual segue with SWRevealViewController in Swift在 Swift 中使用 SWRevealViewController 手动进行 segue
【发布时间】:2015-06-29 19:09:45
【问题描述】:

http://www.appcoda.com/tag/swrevealviewcontroller/ 上有一篇很棒的博文介绍了如何设置 SWRevealViewController,它是滑出式侧边菜单的绝佳组件 (https://github.com/John-Lluch/SWRevealViewController)

不幸的是,没有关于如何执行手动转场的快速示例。

采用更简洁的方法来支持情节提要。 SWRevealViewControllerSegue 现在已弃用,您应该改用 SWRevealViewControllerSegueSetController 和 SWRevealViewControllerSeguePushController。

我已经尝试了一些类似的方法:

let navigationController = self.window?.rootViewController as! SWRevealViewController;

let viewController = navigationController.storyboard?.instantiateViewControllerWithIdentifier("ImportFileSelect") as! ImportFileSelect

navigationController.showViewController(viewController, sender: self)

但这不起作用。有任何想法吗?我已经在网上搜索了 swift 示例,我的下一步是学习目标 c!

【问题讨论】:

  • 你遇到了什么错误,在哪里?

标签: ios swift swrevealviewcontroller


【解决方案1】:

为了工作,您需要执行以下步骤:

  • 您需要实例化 SWRevealViewController 然后附加它 到根控制器。
  • 然后实例化目标控制器。
  • 然后创建导航控制器并设置目的地 控制器作为 rootViewController
  • 最后用 SWReveal 推送导航控制器

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    
    let sw = storyboard.instantiateViewControllerWithIdentifier("SWRevealViewController") as! SWRevealViewController
    
    self.view.window?.rootViewController = sw
    
    let destinationController = self.storyboard?.instantiateViewControllerWithIdentifier("StoryboardID") as! NameOfViewController
    
    
    let navigationController = UINavigationController(rootViewController: destinationController)
    
    
    
    sw.pushFrontViewController(navigationController, animated: true)
    

【讨论】:

  • 这个对我有用,但在确保故事板连接断开之前。
  • 这行得通,但我如何让它反映在后视镜中选择了哪个选项?前任。这是菜单列表中的第三个选项?
【解决方案2】:

我已经取得了一些进展。我可以加载一个新的视图控制器,但无论如何它都没有动画。执行此操作的代码是:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("TARGET_VIEW_CONTROLLER") as! UIViewController
var rvc:SWRevealViewController = self.revealViewController() as SWRevealViewController
rvc.pushFrontViewController(vc, animated: true)

【讨论】:

    【解决方案3】:
    1. 下载SWRevealViewController项目的zip格式Github
    2. 将 SWRevealViewController.m 和 SWRevealViewController.h 文件从 zip(SWRevealViewController 文件夹)拖到您的项目中,然后在提示消息“您要配置 Objective-C 桥接头吗?”时单击“是”
    3. 看看 RevealControllerStoryboardExample2 项目中的故事板。用这个例子设计你的故事板。

    【讨论】:

    • 谢谢,但我是专门询问 swift 的。我可以在这里看到代码github.com/John-Lluch/SWRevealViewController/blob/master/… 可能会这样做,但我无法将其翻译成 swift。
    • Storyboards 不依赖于 Swift 或 Obj-C。我的答案是针对 Swift 指定的,请看第二步。
    • 你的链接错了,这个文件对你有用github.com/John-Lluch/SWRevealViewController/blob/master/…下载所有项目看看。
    • 对不起,也许我没有说清楚。我的项目在一个快速的项目中工作非常好。第 1 步和第 2 步已经完成并且正在工作。我找不到的是手动执行 segue 的快速代码示例。我让它处理静态表格单元格内容没有任何问题。
    • 对不起,我误解了你的问题。我以为你想用 segues 和故事板配置你的 SWRevealViewController。
    【解决方案4】:

    这不是应该的,但至少我找到了一种方法。

    在你有 slideOut 菜单的 TableViewController 中执行以下操作:

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            if(indexPath.row == <some position> ){
                let vc: AnyObject! = self.storyboard?.instantiateViewControllerWithIdentifier("YOUR_DESTINATION_IDENTIFIER")
                self.showViewController(vc as! SWRevealViewController, sender: vc)
            }
    

    满足条件的将使用默认动画,不像滑出菜单通常那样。

    之后,在storyboard中,做一个普通的Reveal View Controller Push控制器,只要不满足条件就会正常退出滑出菜单

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2016-02-22
      • 2015-12-09
      • 1970-01-01
      相关资源
      最近更新 更多