我想显示一个弹出菜单,而不使用nib。我不喜欢使用nib,因为头痛实现了一个简单的功能委托。我成功使用modalPresentationStyle
作为Popover
将ViewController
显示为Popover
,并且可以使用以下代码正常工作。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var btnShowPopOver: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func showPopUP(sender: AnyObject) {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let popVC = storyboard.instantiateViewControllerWithIdentifier("pop")as! PopViewController
popVC.modalPresentationStyle = UIModalPresentationStyle.Popover
popVC.preferredContentSize = CGSizeMake(320, 240)
popVC.popoverPresentationController!.delegate = self
let popOverController = popVC.popoverPresentationController
popOverController!.sourceView = sender as! UIView // where to stick the bar item in which view
popOverController!.sourceRect = CGRectMake(70,30, 0, 0) //where to stick the bar
popOverController?.permittedArrowDirections = nil
self.presentViewController(popVC, animated: true, completion: nil)
}
}
extension ViewController :UIPopoverPresentationControllerDelegate {
func adaptivePresentationStyleForPresentationController(PC: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
var controller = popoverPresentationController.presentedViewController as! PopViewController
println(" this is data from pop view controller \(controller.textField.text)")
}
}
Popover控制器仅适用于iPad设备。 尝试在其他设备上创建一个会导致异常。
我在真实设备iphone-6上进行了测试,并且工作正常。我喜欢这个Popover
。
我是否应该根据Apple文档使用Popover
?因为它在iphone中运行良好,我的应用程序以后会因使用它而被拒绝吗?
答案 0 :(得分:0)
从iOS8开始,我们现在可以创建弹出窗口,这将是相同的 在iPhone上,就像在iPad上一样,对于那些对他们来说特别棒的人来说 制作通用应用,因此无需制作单独的视图或代码。
来源:UIPopoverController for iphone not working?
看看这个答案:
https://stackoverflow.com/a/14789022/3202193
https://stackoverflow.com/a/30418212/3202193
在iOS 9的每个发布文档中,他们也说:
UIPopoverController类用于管理弹出窗口中的内容呈现。您使用弹出窗口暂时显示信息。弹出窗口内容位于现有内容之上,背景自动变暗。在用户点击弹出窗口之外或您明确关闭它之前,弹出窗口仍然可见。 Popover控制器仅适用于 iPad设备。尝试在其他设备上创建一个会导致异常。
我认为您已经使用了iOS 8.0及更高版本中可用的UIPopoverPresentationController。
UIPopoverController和UIPopoverPresentationController是Apple提供的两种不同的东西。