如何通过单击按钮打开 SWRevealViewController?

Posted

技术标签:

【中文标题】如何通过单击按钮打开 SWRevealViewController?【英文标题】:How to open SWRevealViewController from a button click? 【发布时间】:2014-11-10 08:48:09 【问题描述】:

我是 XCode/ios 开发的新手,我正在尝试创建导航菜单。我关注Appcoda's Slideout Sidebar-Menu Tutorial 并设法让它工作。当 SWRevealViewController 是初始 ViewController 时,它会很好地打开。

现在,我有一个带有 Button 的登录页面,当我单击它时,我希望它导航到 SWRevealViewController。

我尝试使用此代码在单击按钮时打开 SWRevealViewController,但它没有显示,并且代码在其他 UIViewController 上有效。

SWRevealViewController *menu = [[SWRevealViewController alloc] init]; [self.navigationController pushViewController:menu animated:YES];

有人可以指导我为什么以及如何实现我想要的吗?这可能是一个愚蠢的问题,但我需要帮助。提前致谢!

【问题讨论】:

显示屏幕截图,我不明白你的意思 @Anbu.Karthik 按要求上传了屏幕截图。对不起小字体。第一个是带有按钮的视图控制器。第二个是 SWRevealViewController。 【参考方案1】:

请检查以下代码。希望对你有帮助

第 1 步: 只需为您的 SWRevealViewController 提供情节提要参考,然后在您的按钮操作中编写以下代码

在 Objective-C 中

 SWRevealViewController *revealVC = [self.storyboard instantiateViewControllerWithIdentifier:@"swRevealViewContoller"];
                revealVC.delegate=self;
 [[UIApplication sharedApplication]keyWindow].rootViewController = revealVC;

在 Swift 中:

//MARK: searchBtnClicked
@IBAction func searchBtnClicked(sender: AnyObject) 
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("swRevealViewContoller") as? SWRevealViewController
     UIApplication.sharedApplication().keyWindow!.rootViewController = nextViewController;

如果您遇到此类问题,只需将其视为“rootViewController”,然后享受您的编码吧..

【讨论】:

应该是push,而不是替换根视图本身。【参考方案2】:

使用这个

let myRevealViewControl:SWRevealViewController = self.revealViewController()
    let myStoryBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let myDest = myStoryBoard.instantiateViewController(withIdentifier: "homePage") as! UIViewController
    let myNewFrontView = UINavigationController.init(rootViewController: myDest)
    myRevealViewControl.pushFrontViewController(myNewFrontView, animated: true)

【讨论】:

如果 SWRevealViewConttoller 本身在不同的故事板中, self.revealViewController() 将不起作用。任何替代解决方案?【参考方案3】:

你可以这样做:

menuButton.addTarget(revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:)), for: .touchUpInside)

【讨论】:

以上是关于如何通过单击按钮打开 SWRevealViewController?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击按钮禁用 JQuery 功能,但默认保持打开状态?

如何通过单击按钮从颤振应用程序中使用应用内浏览器打开 URL?

如何在按钮单击时打开 Instagram 应用程序

Cordova - 通过单击按钮打开本机电子邮件应用程序

如何使用 Playwright 打开新标签(例如单击按钮在新标签中打开新部分)

Javascript - 通过单击按钮在新选项卡中打开给定的 URL