[英]Swift SWRevealController without storyboard
I implemented SWRevealController with storyboard and everything works great, but now I would like to program the app without storyboard. 我用情节提要实现了SWRevealController ,并且一切正常,但是现在我想在没有情节提要的情况下对应用程序进行编程。
Can someone help me with the implementation? 有人可以帮我实施吗? I have a FrontViewController and a MenuViewController.
我有一个FrontViewController和一个MenuViewController。 Do I need an extra SWRevealViewController for this and if yes, what do I have to code?
为此,我是否需要一个额外的SWRevealViewController?如果是,我必须编写什么代码?
I know there is some information on SWRevealController but it is in Objective-C and I have some problems to write this in Swift 2.0. 我知道在SWRevealController上有一些信息,但是它在Objective-C中,并且在Swift 2.0中编写时遇到一些问题。
You can do it as follow. 您可以按照以下步骤进行操作。
Create one function createSlidingMenu
in appDelegate. 在
createSlidingMenu
中创建一个函数createSlidingMenu
。
func createSlidingMenu(){
let frontViewController = //create instance of frontVC
let rearViewController = //create instance of rearVC(menuVC)
//create instance of swRevealVC based on front and rear VC
let swRevealVC = SWRevealViewController(rearViewController: rearViewController, frontViewController: frontViewController);
swRevealVC.toggleAnimationType = SWRevealToggleAnimationType.EaseOut;
swRevealVC.toggleAnimationDuration = 0.30;
//set swRevealVC as rootVC of windows
self.window?.rootViewController = swRevealVC!;
}
call createSlidingMenu
in application:didFinishLaunchingWithOptions:
and you are good to go. 在
application:didFinishLaunchingWithOptions:
调用createSlidingMenu
,您就可以开始了。
This worked for me (in swift 3.1) 这对我有用(迅速3.1)
Create MasterViewController class and associate to UIViewController (MasterViewController) in Storyboard and implements SWRevealViewControllerDelegate protocol (see code) 在Storyboard中创建MasterViewController类并与UIViewController(MasterViewController)关联,并实现SWRevealViewControllerDelegate协议(请参见代码)
import UIKit class MasterViewController: UIViewController, SWRevealViewControllerDelegate { override func viewDidLoad() { super.viewDidLoad() let frontNavigationController:UINavigationController let rearNavigationController:UINavigationController let revealController = SWRevealViewController() var mainRevealController = SWRevealViewController() let menuTable = self.storyboard?.instantiateViewController(withIdentifier: "MenuViewController")as! MenuViewController let homepage = self.storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController frontNavigationController = UINavigationController(rootViewController: homepage) rearNavigationController = UINavigationController(rootViewController: menuTable) rearNavigationController.setNavigationBarHidden(true, animated: false) revealController.frontViewController = frontNavigationController revealController.rearViewController = rearNavigationController revealController.delegate = self mainRevealController = revealController UIApplication.shared.delegate!.window?.rootViewController = mainRevealController }
} }
As alternative you could omit MasterViewController and: 或者,您可以省略MasterViewController并:
In addition to Hitendra, I modify the following code so I can put navigation in Home 除了Hitendra,我还修改了以下代码,以便可以将导航置于Home中
AppDelegate.swift AppDelegate.swift
func toHome() {
let frontViewController = HomeController()//create instance of frontVC
let rearViewController = MenuController() //create instance of rearVC(menuVC)
let swRevealVC = SWRevealViewController(rearViewController: rearViewController, frontViewController: frontViewController);
swRevealVC?.toggleAnimationType = SWRevealToggleAnimationType.easeOut;
swRevealVC?.toggleAnimationDuration = 0.30;
navigationController = UINavigationController(rootViewController: swRevealVC!)
self.window?.rootViewController = navigationController
}
LoginController.swift, when user click login button LoginController.swift,当用户单击登录按钮时
@objc private func login() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.toHome()
return
}
HomeController.swift HomeController.swift
override func viewDidLoad() {
super.viewDidLoad()
setupLayout() // layout programmatically, I didn't put code here
let menuButton = UIBarButtonItem(title: "Menu", style: .plain, target: self, action: #selector(HomeController.menu))
self.revealViewController().navigationItem.leftBarButtonItem = menuButton
}
@objc private func menu() {
revealViewController().revealToggle(self)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.