[英]Swift SWRevealController without storyboard
我用情节提要实现了SWRevealController ,并且一切正常,但是现在我想在没有情节提要的情况下对应用程序进行编程。
有人可以帮我实施吗? 我有一个FrontViewController和一个MenuViewController。 为此,我是否需要一个额外的SWRevealViewController?如果是,我必须编写什么代码?
我知道在SWRevealController上有一些信息,但是它在Objective-C中,并且在Swift 2.0中编写时遇到一些问题。
您可以按照以下步骤进行操作。
在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!;
}
在application:didFinishLaunchingWithOptions:
调用createSlidingMenu
,您就可以开始了。
这对我有用(迅速3.1)
在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 }
}
或者,您可以省略MasterViewController并:
除了Hitendra,我还修改了以下代码,以便可以将导航置于Home中
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,当用户单击登录按钮时
@objc private func login() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.toHome()
return
}
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.