J'apprends Swift et je voulais faire un menu qui est commun à toutes les pages. Comment fait-on ça? Actuellement, j'ajoute manuellement un «bouton de menu» sur chaque page et ajoute une action pour basculer le menu. En passant, j'utilise cette bibliothèque appelée ENSideMenu. Le menu ressemble à ceci. Comment faire pour avoir des menus communs à toutes les pages dans Swift
0
A
Répondre
0
Vous devez créer une classe commune pour cela, et appeler cette fonction. Voici l'exemple.
appel ci-dessous fonction dans votre vue a la méthode de charge
CommonSingleton.sharedInstance.setNavigationItem(itemTitleName: "Menu", navigationItem: self.navigationItem, actionBtn: #selector(self.sideMenuBtnPressed), target: self)
Créer un fichier rapide, nommé 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)
}
}
}
0
Cela peut être fait simplement en créant un contrôleur superview et sur son viewDidLoad créez un bouton et attribuez-lui une action.
J'ai créé un curseur de menu rapide 3.0 here
Utilisez comme référence si vous voulez.
Merci
0
La bibliothèque ne prend pas en charge 2 menus dans la même page
Tabbar? Barre d'outils? Bouton flottant (similaire à Material Design)? Container ViewControllers? Il y a plusieurs approches. – nathan
@nathan Je ne sais pas comment ça s'appelle depuis que je suis encore nouveau, mais j'ai posté un tir d'échantillon – KaelJasper
Ajouter le menu sur un contrôleur et sur un clic d'un bouton, ajouter la vue sur le contrôleur où vous voulez présenter . –