如何导航到不同的故事板与sidemenu沿SWIFT 3

问题描述:

我使用命名为sidemenu第三方控制:MMDrawerController,和m使用多个处理UI storyboards.let我来我sidemenu看起来像这样的地步:Sidemenu Image如何导航到不同的故事板与sidemenu沿SWIFT 3

努力实现:

1)当我点击父 “main.storyboard” 应显示。

2)当我点击管理时,应该显示“management.storyboard”。

相同的sidemenu应显示在所有故事板文件中。

我试图通过我自己的一些代码,但很老的 “management.storyboard” :(在sidemenu

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    switch(indexPath.row) 
    { 
    case 4: 
     let mainstoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     var welview = mainstoryboard.instantiateViewController(withIdentifier: "WelcomeParentViewController") as! WelcomeParentViewController 
     var welnav = UINavigationController(rootViewController: welview) 
     var appdel : AppDelegate = UIApplication.shared.delegate as! AppDelegate 

     appdel.centerContainer!.centerViewController = welnav 
     appdel.centerContainer!.toggle(MMDrawerSide.left, animated: true, completion: nil) 
     break 
    case 5: 
     let mainstoryboard : UIStoryboard = UIStoryboard(name: "Management-Storyboard", bundle: nil) 
     var welview = mainstoryboard.instantiateViewController(withIdentifier: "ReportsViewController") as! ReportsViewController 
     var welnav = UINavigationController(rootViewController: welview) 
     var appdel : AppDelegate = UIApplication.shared.delegate as! AppDelegate 

     appdel.centerContainer!.centerViewController = welnav 
     appdel.centerContainer!.toggle(MMDrawerSide.left, animated: true, completion: nil) 
     break 
    default : 
     break 


    } 

我想在所有的故事板文件相同sidemenu。

如何完成上述feature.Please Help.Thank你提前。

copy bundle resources screenshot

的appdelegate.swift

import UIKit 
import GoogleMaps 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

var window: UIWindow? 
var centerContainer : MMDrawerController? 



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    if isUserLoggedIn() 
    { 
     let appDelegate = UIApplication.shared.delegate as! AppDelegate 
     appDelegate.gotoMainvc() 
    } 
    else 
    { 
     let rootViewController = self.window!.rootViewController 
     let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let setViewController = mainStoryboard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController 
     rootViewController?.navigationController?.popToViewController(setViewController, animated: false) 
    } 
    return true 
} 

func isUserLoggedIn() -> Bool{ 
    if let accessToken = UserDefaults.standard.object(forKey: "access_token") as? String 
    { 
     if (accessToken.characters.count) > 0{ 
      return true 
     } else { 
      return false 
     } 

    } 
    else { 
     return false 
    } 
} 
func gotoMainvc() 
{ 

    var rootviewcontroller = self.window?.rootViewController 

    if(UIDevice.current.userInterfaceIdiom == .phone) 
    { 

    let mainstoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

     var centerviewcontroller = mainstoryboard.instantiateViewController(withIdentifier: "WelcomeParentViewController") as! WelcomeParentViewController 

     var leftsideviewcontroller = mainstoryboard.instantiateViewController(withIdentifier: "LeftSideMenuViewController") as! LeftSideMenuViewController 
     let leftsidenav = UINavigationController(rootViewController: leftsideviewcontroller) 
     let centernav = UINavigationController(rootViewController: centerviewcontroller) 
     centerContainer = MMDrawerController(center: centernav, leftDrawerViewController: leftsidenav) 

     centerContainer?.openDrawerGestureModeMask = MMOpenDrawerGestureMode.panningCenterView 
     centerContainer?.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.panningCenterView 

     window?.rootViewController = centerContainer 
     window?.makeKeyAndVisible() 
    } 
    else{ 

     let mainstoryboard2 : UIStoryboard = UIStoryboard(name: "Storyboard-iPad", bundle: nil) 
     var centerviewcontroller = mainstoryboard2.instantiateViewController(withIdentifier: "WelcomeParentViewController") as! WelcomeParentViewController 

     var leftsideviewcontroller = mainstoryboard2.instantiateViewController(withIdentifier: "LeftSideMenuViewController") as! LeftSideMenuViewController 
     let leftsidenav = UINavigationController(rootViewController: leftsideviewcontroller) 
     let centernav = UINavigationController(rootViewController: centerviewcontroller) 
     centerContainer = MMDrawerController(center: centernav, leftDrawerViewController: leftsidenav) 

     centerContainer?.openDrawerGestureModeMask = MMOpenDrawerGestureMode.panningCenterView 
     centerContainer?.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.panningCenterView 

     window?.rootViewController = centerContainer 
     window?.makeKeyAndVisible() 
    } 

} 


//MARK: sharedDelegate 

func sharedDelegate() -> AppDelegate 

{ 
    return UIApplication.shared.delegate as! AppDelegate 
} 


} 
+0

你已经尝试了回复亲爱的请参考我的更新的代码问题 –

+0

@kirtimali感谢。 – deltami

+0

确保“Management-Storyboard”的名称是正确的?没有必要添加分机 –

这里里面MMDrawerController代码是从其他故事板

代码开放侧
@IBAction func menutapped(_ sender: Any) { 

     var appdelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate 
     appdelegate.centerContainer?.toggle(MMDrawerSide.left, animated: true, completion: nil) 


    } 

主视图控制器

import UIKit 

class ViewController: UIViewController , UICollectionViewDelegate , UICollectionViewDataSource , UIGestureRecognizerDelegate { 

    @IBOutlet weak var collectioncell: UICollectionView! 
    var objectProfile:SideMenuViewController! 
    var tapGesture = UITapGestureRecognizer() 

     override func viewDidLoad() { 

     super.viewDidLoad() 


     tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myviewTapped(_:))) 
     tapGesture.numberOfTapsRequired = 1 
     tapGesture.numberOfTouchesRequired = 1 
     collectioncell.addGestureRecognizer(tapGesture) 
     collectioncell.isUserInteractionEnabled = true 
     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     self.objectProfile = storyboard.instantiateViewController(withIdentifier: "SideMenuViewController") as! SideMenuViewController 

     self.objectProfile.view.frame = CGRect(x: -(self.view.frame.size.width - 40), y: 0, width: self.view.frame.size.width - 40, height: self.view.frame.size.height) 
     self.view.addSubview(self.objectProfile.view) 
     self.navigationController?.didMove(toParentViewController: self.objectProfile) 

     self.collectioncell.layer.cornerRadius = 5.0 
     self.collectioncell.layer.borderWidth = 5.0 
     self.collectioncell.clipsToBounds = true 
     self.collectioncell.layer.borderColor = UIColor.clear.cgColor 
     self.collectioncell.layer.masksToBounds = true 


    } 
    func myviewTapped(_ sender: UITapGestureRecognizer) { 

     if self.objectProfile.view.isHidden == false { 
      UIView.animate(withDuration: 0.3) 
      { 
       self.objectProfile.view.frame = CGRect(x: -(self.view.frame.size.width - 90), y: 0, width: self.view.frame.size.width - 90, height: self.view.frame.size.height) 
      } 
     } 
    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    @IBAction func Mrnupressed(_ sender: UIBarButtonItem) { 
     UIView.animate(withDuration: 0.3) 
     { 
      self.objectProfile.view.frame = CGRect(x: 0 , y: 0, width: (self.view.frame.size.width - 100), height: self.view.frame.size.height) 
     } 

    } 


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    { 
     return 6 
    } 
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! MainCollectionViewCell 
     return cell 
    } 
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 

     let cellsize = CGSize(width: (collectioncell.bounds.size.width/2) - 12, height:(collectioncell.bounds.size.height/3) - 20) 

     return cellsize 
    } 






} 

儿童视图控制器

import UIKit 

class SideMenuViewController: UIViewController,UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet weak var sidemenutable: UITableView! 
    var stri:String! 
    var ArrarMenu:[String] = ["Home","SiteMep","Student","About Us","Help"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return ArrarMenu.count 
    } 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "SideMenuCell") as! SideMenuTableViewCell 
     let objarray = ArrarMenu[indexPath.row] 
     cell.lblitem.text = objarray 
     stri = objarray 
     return cell 
    } 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     if indexPath.row == 0{ 
      self.performSegue(withIdentifier: "SegueForHome", sender: self) 
     } 
    } 

} 

在这段代码中我是用儿童观作为边马努控制器

enter image description here

+0

感谢时间抢劫,但我认为你没有正确理解我的问题。我想用sidemenu切换故事板。 – deltami