如何在每个控制器视图上重复使用幻灯片菜单的栏按钮

时间:2018-01-20 08:48:14

标签: ios side-menu

我已经构建了一个工作正常的幻灯片菜单。每个按钮都会指向一个新的视图控制器。而不是点击子视图控制器的后退按钮返回主视图控制器切换到下一个功能,我希望每个视图控制器都有相同的滑动菜单。

我想在下面的图片中替换"<测试应用"我的滑动菜单图标指向与主要菜单相同的菜单。

enter image description here

我已阅读Sliding Menu on every view controller in swift,但目前尚不清楚。我是xcode / ios的新手。

我无法找到一些关于如何做到这一点的好文档。我在哪里可以找到doc,tuto,我想做什么?

2 个答案:

答案 0 :(得分:2)

第1步

创建一个名为" BaseMenuController" 的类继承子类 UIViewController

第2步

在BaseMenuController中,粘贴以下代码。

import UIKit

class BaseMenuController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        addMenuBarButtonItem()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func addMenuBarButtonItem() {
        let image = UIImage(named: "side_menuImage")
        let backItem = UIBarButtonItem(image: image,
                                       style: .plain,
                                       target: self,
                                       action: #selector(showSideMenu))

        self.navigationItem.leftBarButtonItem = backItem

    }

    @objc func showSideMenu(){
    if (UIApplication.shared.userInterfaceLayoutDirection == .leftToRight)       {
        self.sideMenuViewController.presentLeftMenuViewController()
    }else{
        self.sideMenuViewController.presentRightMenuViewController()
    }

   }
}

第3步

现在您的控制器类已准备就绪。您只需要继承 BaseMenuController 当您创建新的Controller类时。将 BaseMenuController 类作为子类。

import UIKit

class UIViewController:BaseMenuController  {


    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

答案 1 :(得分:1)

您可以在BaseViewController类中添加SideMenu Button。

func addMenuButtonToNavigationBar(){
    self.leftSearchBarButtonItem =  UIBarButtonItem(image: UIImage.init(named: "side_menu"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(showSideMenu))
    self.navigationItem.leftBarButtonItem = self.leftSearchBarButtonItem;
}
@objc func showSideMenu(){
    if (UIApplication.shared.userInterfaceLayoutDirection == .leftToRight) {
        self.sideMenuViewController.presentLeftMenuViewController()
    }else{
        self.sideMenuViewController.presentRightMenuViewController()
    }
}

并且在每个视图中控制器的viewwillappear()方法调用上面这样的方法     self.addMenuButtonToNavigationBar()

我正在使用pod作为副手。 https://github.com/romaonthego/RESideMenu