【问题标题】:revealViewController delegate doesn't workrevealViewController 委托不起作用
【发布时间】:2017-10-26 07:55:54
【问题描述】:

我正在使用 SWReveal 库来创建侧边菜单,我的目标是每当用户单击菜单栏时,它将打开侧边菜单并禁用前视图,并使前视图变为黑色且不透明。

我需要按菜单汉堡栏返回前视图

我试图模仿的例子

我的代码

import UIKit

class ViewController: UIViewController, SWRevealViewControllerDelegate {

@IBOutlet var menuBarBurger: UIBarButtonItem!

override func viewDidLoad() {
    super.viewDidLoad()
    revealViewController().delegate = self
    setupSideMenu()
}

func setupSideMenu() {
    if revealViewController() != nil {
        menuBarBurger.target = self.revealViewController()
        menuBarBurger.action = #selector(SWRevealViewController.revealToggle(_:))
        revealViewController().rearViewRevealWidth = 300

        view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }
}

// This is the part where the background will turn blur and so on.
func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition) {

    let tagId = 8009
    if revealController.frontViewPosition == FrontViewPosition.right {
        let lock = self.view.viewWithTag(tagId)
        UIView.animate(withDuration: 0.25, animations: {
            lock?.alpha = 0
        }, completion: {(finished: Bool) in
            lock?.removeFromSuperview()
        })

        lock?.removeFromSuperview()
    } else if revealController.frontViewPosition == FrontViewPosition.left {
        let lock = UIView(frame: self.view.bounds)
        lock.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        lock.tag = tagId
        lock.alpha = 0
        lock.backgroundColor = UIColor.black
        lock.addGestureRecognizer(UITapGestureRecognizer(target: self.revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:))))
        self.view.addSubview(lock)

        UIView.animate(withDuration: 0.5, animations: {
            lock.alpha = 0.333
        })
    }
}
}

故事板

tagid(以防万一)

我应该怎么做,才能实现相同的设计?

【问题讨论】:

    标签: ios swift swrevealviewcontroller


    【解决方案1】:

    您尚未将代理设置为self

    revealViewController().delegate = self
    

    假设revealViewController()SWRevealViewController 类型并且是您要显示的ViewController。

    【讨论】:

    • 我已经添加了那行,但似乎它不起作用,甚至没有触发委托。
    • 你能分享revealViewController()的代码吗?
    • 任何成功,同样的问题
    • revealViewController()的声明是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多