Swift – iOS 8中的UIPopoverController
我正在尝试将一个简单的popoverController添加到我的
iphone应用程序中,而我正在努力使用经典的“空白屏幕”,当我点击按钮时,它会覆盖所有内容.
我的代码看起来像这样: @IBAction func sendTapped(sender: UIBarButtonItem) { var popView = PopViewController(nibName: "PopView",bundle: nil) var popController = UIPopoverController(contentViewController: popView) popController.popoverContentSize = CGSize(width: 3,height: 3) popController.presentPopoverFromBarButtonItem(sendTappedOutl,permittedArrowDirections: UIPopoverArrowDirection.Up,animated: true) func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!) -> UIModalPresentationStyle { // Return no adaptive presentation style,use default presentation behaviour return .None } } adaptivePresentationStyleForPresentationController函数只是我添加的东西,因为我在某处读到这是你需要实现的,以便在iphone上获得此功能.但仍然:整个屏幕上仍然有一个空白图像,我不知道如何修复它. 任何建议,将不胜感激. 解决方法
我为此实现的解决方案基于2014年WWDC会议
View Controller Advancements in iOS 8中提供的示例(参见
slide notes).请注意,您必须实现adaptivePresentationStyleForPresentationController函数作为UIPopoverPresentationControllerDelegate的一部分,但该函数应位于主视图控制器中的sendTapped函数之外,并且必须在该文件的类声明行中指定UIPopoverPresentationControllerDelegate以确保您的代码会修改该行为.我还冒昧地将逻辑分离出来,将弹出窗口中的视图控制器呈现给它自己的函数,并添加了一个检查,以确保该函数在当前上下文中已经呈现时不会呈现请求视图控制器.
所以,你的解决方案看起来像这样: // ViewController must implement UIPopoverPresentationControllerDelegate class TheViewController: UIViewController,UIPopoverPresentationControllerDelegate { // ... // The contents of TheViewController class // ... @IBAction func sendTapped(sender: UIBarButtonItem) { let popView = PopViewController(nibName: "PopView",bundle: nil) self.presentViewControllerAsPopover(popView,barButtonItem: sender) } func presentViewControllerAsPopover(viewController: UIViewController,barButtonItem: UIBarButtonItem) { if let presentedVC = self.presentedViewController { if presentedVC.nibName == viewController.nibName { // The view is already being presented return } } // Specify presentation style first (makes the popoverPresentationController property available) viewController.modalPresentationStyle = .Popover let viewPresentationController = viewController.popoverPresentationController? if let presentationController = viewPresentationController { presentationController.delegate = self presentationController.barButtonItem = barButtonItem presentationController.permittedArrowDirections = .Up } viewController.preferredContentSize = CGSize(width: 30,height: 30) self.presentViewController(viewController,animated: true,completion: nil) } func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { return .None } } 现实世界的实施 我在Github上托管的正在进行的应用程序中的注册表单上实现了此方法的输入验证.我在 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |