Reputation: 988
I've built a slide menu that works fine. Each button leads to a new view controller. Rather than clicking on the back button of the subview view contoller to return to the main view controller to switch to the next function, I'd like from every view controller to have the same sliding menu.
I want in the image below to replace "< Test app" with my sliding menu icon pointing to the same menu as the main one.
I've read Sliding Menu on every view controller in swift but it's still unclear. I'm new to xcode/ios.
I can't find some good doc on how to do that. Where can I find doc, tuto for what I would like to do?
Upvotes: 0
Views: 1730
Reputation: 2924
Step 1
Create a class with name "BaseMenuController" inherit with subclass UIViewController.
Step 2
In BaseMenuController, paste following code.
import UIKit
class BaseMenuController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
addMenuBarButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func addMenuBarButtonItem() {
let image = UIImage(named: "side_menuImage")
let backItem = UIBarButtonItem(image: image,
style: .plain,
target: self,
action: #selector(showSideMenu))
self.navigationItem.leftBarButtonItem = backItem
}
@objc func showSideMenu(){
if (UIApplication.shared.userInterfaceLayoutDirection == .leftToRight) {
self.sideMenuViewController.presentLeftMenuViewController()
}else{
self.sideMenuViewController.presentRightMenuViewController()
}
}
}
Step 3
Now your Controller Class is ready. you only need to inherit BaseMenuController When you create a new Controller Class. Give BaseMenuController class as a subclass.
import UIKit
class UIViewController:BaseMenuController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Upvotes: 2
Reputation: 1626
You can add SideMenu Button your BaseViewController class.
func addMenuButtonToNavigationBar(){
self.leftSearchBarButtonItem = UIBarButtonItem(image: UIImage.init(named: "side_menu"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(showSideMenu))
self.navigationItem.leftBarButtonItem = self.leftSearchBarButtonItem;
}
@objc func showSideMenu(){
if (UIApplication.shared.userInterfaceLayoutDirection == .leftToRight) {
self.sideMenuViewController.presentLeftMenuViewController()
}else{
self.sideMenuViewController.presentRightMenuViewController()
}
}
And in every view controller's viewwillappear() method call above method like this self.addMenuButtonToNavigationBar()
I am using pod for sidemen. https://github.com/romaonthego/RESideMenu
Upvotes: 1