【问题标题】:SWRevealViewController - Reveal not showing nav menuSWRevealViewController - 显示不显示导航菜单
【发布时间】:2016-01-11 21:08:23
【问题描述】:

我正在关注this 教程,我正处于(大约一半)将这段代码添加到某种控制器的地方:

if self.revealViewController() != nil {
    menuButton.target = self.revealViewController()
    menuButton.action = "revealToggle:"
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

现在,我对这段代码的去向感到有些困惑。我目前将它放在我的“前”视图中(菜单关闭时显示的那个)。但是,当我单击菜单按钮时,什么也没有发生。

这是我当前的故事板的样子(主屏幕上“主页”左侧有一个白色菜单按钮,很难看到):

这是我当前在 HomeViewController.Swift 中的 viewDidLoad 函数:

override func viewDidLoad() {
        super.viewDidLoad()

        if self.revealViewController() != nil {
            print("reveal")
            menuButton.target = self.revealViewController()
            menuButton.action = "revealToggle:"
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        }


        if webView != nil {
            print("webview is not null")
            webView!.scrollView.bounces = false

            let path = NSBundle.mainBundle().pathForResource("find_it_myself", ofType: "html", inDirectory: "assets/html/home")
            let serviceDeskPath = NSBundle.mainBundle().pathForResource("ServiceDeskNumbers", ofType: "json", inDirectory: "assets/data")
            let serviceDeskData = NSData(contentsOfMappedFile: serviceDeskPath!)
            let serviceCenterPath = NSBundle.mainBundle().pathForResource("ITSC Live Room Locations", ofType: "json", inDirectory: "assets/data")
            let serviceCenterData = NSData(contentsOfMappedFile: serviceCenterPath!)

            let newStr = NSString(data: serviceDeskData!, encoding: NSUTF8StringEncoding)
            let newerStr = NSString(data: serviceCenterData!, encoding: NSUTF8StringEncoding)

            NSLog(String(webView!.URL))



            NSLog("path: " +  path!)
            let requestURL = NSURL(fileURLWithPath: path!)
            print("request is not null")
            let request = NSURLRequest(URL:requestURL)

            let theConfiguration = WKWebViewConfiguration()
            theConfiguration.userContentController.addScriptMessageHandler(self, name: "interOp")

            webView!.loadRequest(request)
        }
        else{

            print("webview is null")
        }



    }

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我会发布我的解决方案以防万一。显示实际上是有效的,但只能通过滑动手势,而不是通过按下菜单按钮。

    我为 menuButton 添加了一个按钮按下函数,并通过从 GitHub 项目 (SWRevealViewController) 调用库的revealToggle 函数。

    @IBAction func menuButtonPressed(sender : AnyObject){
            self.revealViewController().revealToggle(menuButton)
        }
    

    【讨论】:

      【解决方案2】:

      所有这些代码:

      menuButton.target = self.revealViewController()
      menuButton.action = "revealToggle:"
      

      表示 RevealViewController 上的调用方法 (revealToggle:),这意味着您应该在 ReleavelViewController 中有一个具有该名称的方法,并且应该在那里做您想做的事情(如果这是有意的话)。理想情况下,你应该有这样的东西:

      menuButton.target = self
      menuButton.action = "revealToggle:"
      

      然后:

      func revealToggle(sender: AnyObject) {
          //present your view controller
          self.pushViewController(self.revealViewController(), animated: true)
      }
      

      您在这里尝试做的事情非常令人困惑。你revealVC在某些事件上显示导航控制器,在其他事件上显示菜单控制器。从您的解释看来,您的家庭控制器是提供revealVC的控制器,但似乎没有任何问题?您的意思是让您的导航控制器成为“初始控制器”吗?

      【讨论】:

      • 你看教程了吗? Reveal View Controller 应该是打开的 View。我是 iOS 开发的新手,所以我无法告诉你为什么教程会按照它的方式做事,我只是想按照它来做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2019-06-07
      • 2018-08-22
      • 1970-01-01
      • 2019-07-14
      相关资源
      最近更新 更多