SWRevealViewController - 显示未显示导航菜单

时间:2016-01-11 21:08:23

标签: ios swift

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

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

现在,我对这段代码的位置感到有些困惑。我目前在我的"前面"视图(菜单关闭时显示的视图)。但是,当我单击我的菜单按钮时,没有任何反应。

这是我当前的故事板的样子(主屏幕上有一个白色菜单按钮" Home"很难看到):

enter image description here

这是我在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")
        }



    }

2 个答案:

答案 0 :(得分:0)

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

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

put (from: new File('build/app').listFiles(), into: '/opt/nginx/latest/html/')

答案 1 :(得分:-1)

所有这些代码:

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)
}

你在这里想要做的事情让你很困惑。您的揭示VC在某些事件上显示导航控制器,在某些其他事件上显示菜单控制器。从您所解释的情况来看,您的家庭控制器是揭示了揭示VC的那个,但似乎并不是这样的一个障碍?您的意思是制作导航控制器"初始控制器"?