Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不带故事板的Swift SWRevealController_Ios_Swift_Swrevealviewcontroller - Fatal编程技术网

Ios 不带故事板的Swift SWRevealController

Ios 不带故事板的Swift SWRevealController,ios,swift,swrevealviewcontroller,Ios,Swift,Swrevealviewcontroller,我用storyboard实现,一切都很好,但现在我想在没有storyboard的情况下编写应用程序 有人能帮我实施吗?我有一个FrontViewController和一个MenuViewController。我需要一个额外的SWRevealViewController吗?如果需要,我需要编写什么代码 我知道有一些关于的信息,但它是在Objective-C中,我在Swift 2.0中编写时遇到了一些问题。您可以按照以下操作 在appDelegate中创建一个函数createSlidingMenu

我用storyboard实现,一切都很好,但现在我想在没有storyboard的情况下编写应用程序

有人能帮我实施吗?我有一个FrontViewController和一个MenuViewController。我需要一个额外的SWRevealViewController吗?如果需要,我需要编写什么代码


我知道有一些关于的信息,但它是在Objective-C中,我在Swift 2.0中编写时遇到了一些问题。

您可以按照以下操作

在appDelegate中创建一个函数
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!;
}

应用程序中调用
createSlidingMenu
:使用选项完成启动:
,您就可以开始了。

您可以按如下操作

在appDelegate中创建一个函数
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!;
}
应用程序中调用
createSlidingMenu
:使用选项完成启动:
,您就可以开始了。

这对我很有效(在swift 3.1中)

  • 在序列图像板中,创建MasterViewController、序列图像板ID为“HomeViewController”的HomeViewController(嵌入在UINavigationController中)和序列图像板ID为“MenuViewController”的MenuViewController(嵌入在UINavigationController中)
  • 创建MasterViewController类并与情节提要中的UIViewController(MasterViewController)关联,并实现SWRevealViewControllerDelegate协议(请参见代码)

    }

  • 作为备选方案您可以省略MasterViewController,并:

    • 在AppDelegate和
    • 复制上面在application:didFinishLaunchingWithOptions中写入的viewDidLoad主体代码:
  • 这对我很有用(在swift 3.1中)

  • 在序列图像板中,创建MasterViewController、序列图像板ID为“HomeViewController”的HomeViewController(嵌入在UINavigationController中)和序列图像板ID为“MenuViewController”的MenuViewController(嵌入在UINavigationController中)
  • 创建MasterViewController类并与情节提要中的UIViewController(MasterViewController)关联,并实现SWRevealViewControllerDelegate协议(请参见代码)

    }

  • 作为备选方案您可以省略MasterViewController,并:

    • 在AppDelegate和
    • 复制上面在application:didFinishLaunchingWithOptions中写入的viewDidLoad主体代码:

  • 除了Hitendra,我还修改了下面的代码,这样我就可以把导航放在家里了

    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
    }
    
    斯威夫特家庭控制器

    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)
    }
    

    除了Hitendra,我还修改了下面的代码,这样我就可以把导航放在家里了

    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
    }
    
    斯威夫特家庭控制器

    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)
    }
    

    你打的地方…你打的地方…明白了。。在appDelegate中添加了您的方法。在
    应用程序中调用它:使用选项完成启动:
    使用
    self.createSlidingMenu()
    在ViewController中,我创建了一个按钮,该按钮应使用打开滑动菜单:
    menuButton.addTarget(self.revealViewController(),操作:选择器(“Revealtogle:”),forControlEvents:.TouchUpInside)
    是的,非常感谢!我还了解了如何切换到新的ViewController:
    revalviewcontroller()。按下FrontViewController(NextViewController(),动画:true)
    很高兴知道您的问题已经解决。如果你接受我的答案并投票表决,那就太好了,这将有助于社区找到有效的答案。你还需要更改导航控制器的颜色,因为如果你将导航控制器用作frontVC,那么它将始终在window@MiguelValencia它应该是这样的“让frontViewController=HomeViewController()''让rearViewController=LeftMenuViewController()'得到它。。在appDelegate中添加了您的方法。在
    应用程序中调用它:使用选项完成启动:
    使用
    self.createSlidingMenu()
    在ViewController中,我创建了一个按钮,该按钮应使用打开滑动菜单:
    menuButton.addTarget(self.revealViewController(),操作:选择器(“Revealtogle:”),forControlEvents:.TouchUpInside)
    是的,非常感谢!我还了解了如何切换到新的ViewController:
    revalviewcontroller()。按下FrontViewController(NextViewController(),动画:true)
    很高兴知道您的问题已经解决。如果你接受我的答案并投票表决,那就太好了,这将有助于社区找到有效的答案。你还需要更改导航控制器的颜色,因为如果你将导航控制器用作frontVC,那么它将始终在window@MiguelValencia它应该是这样的“让frontViewController=HomeViewController()''让rearViewController=LeftMenuViewController()'