如何在Swift中的所有页面都具有菜单

问题描述:

我正在学习Swift,并且我想制作一个对所有页面都通用的菜单。我该怎么做?目前,我在每个页面上手动添加一个“菜单按钮”并添加一个操作来切换菜单。顺便说一句,我正在使用这个库叫ENSideMenu。菜单看起来像这样。 enter image description here如何在Swift中的所有页面都具有菜单

+0

的TabBar?工具栏?浮动按钮(类似于材料设计)?容器ViewControllers?有几种方法。 – nathan

+0

@nathan因为我还是个新手,所以我不知道它是什么,但我发布了一个样本镜头 – KaelJasper

+0

在控制器上添加菜单,然后点击按钮,在控制器上添加想要呈现的视图。 –

您应该为此创建一个公共类,然后调用该函数。这里是例子。

拨打以下功能在你看来没有加载方法

CommonSingleton.sharedInstance.setNavigationItem(itemTitleName: "Menu", navigationItem: self.navigationItem, actionBtn: #selector(self.sideMenuBtnPressed), target: self) 

通过创建上海华控制器,并在其viewDidLoad中创建一个快捷文件,命名为CommonSingleton

import UIKit 
import Firebase 

private let sharedToken = CommonSingleton() 

class CommonSingleton { 

    class var sharedInstance: CommonSingleton { 
     return sharedToken 
    } 

    func setNavigationItem(itemTitleName: String, navigationItem:UINavigationItem, actionBtn:Selector,target:Any){ 
     if(itemTitleName=="Refresh"){ 
//   navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .refresh, target: target, action: actionBtn) 
      let btnCreateBid: UIButton = UIButton() 
      let image = UIImage(named: "navRefresh") 
      btnCreateBid.setImage(image, for: .normal) 
      btnCreateBid.frame = CGRect(x: 0, y: 0, width: (image?.size.width)!, height: (image?.size.height)!) 
      btnCreateBid.addTarget(target, action: actionBtn, for: .touchUpInside) 
      btnCreateBid.layer.cornerRadius = 4.0 
      btnCreateBid.clipsToBounds = true 
      let rightItem:UIBarButtonItem = UIBarButtonItem() 
      rightItem.customView = btnCreateBid 
      rightItem.customView?.layer.cornerRadius=5.0 
      navigationItem.rightBarButtonItem = rightItem 
     } 
     else if(itemTitleName=="Done"){ 
      navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: target, action: actionBtn) 
     } 
     else if (itemTitleName=="Back") { 
      let btnCreateBid: UIButton = UIButton() 
      let image = UIImage(named: "icons_Back") 
      btnCreateBid.setImage(image, for: .normal) 
      btnCreateBid.frame = CGRect(x: 0, y: 0, width: (image?.size.width)!, height: (image?.size.height)!) 
      btnCreateBid.addTarget(target, action: actionBtn, for: .touchUpInside) 
      btnCreateBid.layer.cornerRadius = 4.0 
      btnCreateBid.clipsToBounds = true 
      let rightItem:UIBarButtonItem = UIBarButtonItem() 
      rightItem.customView = btnCreateBid 
      rightItem.customView?.layer.cornerRadius=5.0 
      navigationItem.leftBarButtonItem = rightItem 
     } 
     else if(itemTitleName=="Menu"){ 
      let menuButton = UIBarButtonItem(image: UIImage(named: "menu"), style: .plain, target: target, action: actionBtn) 
      navigationItem.leftBarButtonItem = menuButton 
     } 
     else if(itemTitleName=="CreateBid"){ 
      let btnCreateBid: UIButton = UIButton() 
      btnCreateBid.setImage(UIImage(named: "create_bid"), for: .normal) 
      btnCreateBid.frame = CGRect(x: 0, y: 0, width: 30, height: 30) 
      btnCreateBid.addTarget(target, action: actionBtn, for: .touchUpInside) 
      btnCreateBid.layer.cornerRadius = 4.0 
      btnCreateBid.clipsToBounds = true 
      let rightItem:UIBarButtonItem = UIBarButtonItem() 
      rightItem.customView = btnCreateBid 
      rightItem.customView?.layer.cornerRadius=5.0 
      navigationItem.rightBarButtonItem = rightItem 
     } 
     else if(itemTitleName=="MoreOption"){ 
      navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "ic_more_vert_"), style: .plain, target: target, action: actionBtn) 
     } 
    } 
} 

这可以简单地完成创建一个按钮并为其分配一个操作。

我已经创建了SWIFT 3.0 here

菜单滑块,如果你想使用它作为一个参考。

感谢

该库目前不支持2个菜单在同一页面