如何通过单击按钮打开 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?