如何在Swift中的所有页面都具有菜单
问题描述:
我正在学习Swift,并且我想制作一个对所有页面都通用的菜单。我该怎么做?目前,我在每个页面上手动添加一个“菜单按钮”并添加一个操作来切换菜单。顺便说一句,我正在使用这个库叫ENSideMenu。菜单看起来像这样。 如何在Swift中的所有页面都具有菜单
答
您应该为此创建一个公共类,然后调用该函数。这里是例子。
拨打以下功能在你看来没有加载方法
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)
}
}
}
答
该库目前不支持2个菜单在同一页面
的TabBar?工具栏?浮动按钮(类似于材料设计)?容器ViewControllers?有几种方法。 – nathan
@nathan因为我还是个新手,所以我不知道它是什么,但我发布了一个样本镜头 – KaelJasper
在控制器上添加菜单,然后点击按钮,在控制器上添加想要呈现的视图。 –