2017-08-25 2 views
0

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. enter image description hereComment faire pour avoir des menus communs à toutes les pages dans Swift

+0

Tabbar? Barre d'outils? Bouton flottant (similaire à Material Design)? Container ViewControllers? Il y a plusieurs approches. – nathan

+0

@nathan Je ne sais pas comment ça s'appelle depuis que je suis encore nouveau, mais j'ai posté un tir d'échantillon – KaelJasper

+0

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 . –

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