[英]How to display default PopOVer of ios8?
我正在尝试使用swift作为在ios8中显示弹出框
@IBAction func showPopUP(sender: AnyObject) {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let popVC = storyboard.instantiateViewControllerWithIdentifier("pop")as! PopViewController
popVC.modalPresentationStyle = UIModalPresentationStyle.Popover
self.presentViewController(popVC, animated: true, completion: nil)
var presentationController = UIPopoverPresentationController()
presentationController.permittedArrowDirections = UIPopoverArrowDirection.Left | UIPopoverArrowDirection.Right
presentationController.sourceView = popVC.view
presentationController.sourceRect = popVC.view.frame
}
}
但是给我一个错误
由于未捕获的异常'NSGenericException'而终止应用程序,原因:'-[UIPopoverController init]不是有效的初始化程序。 您必须调用-[UIPopoverController initWithContentViewController:]。
我在这里做错了什么?
编辑:我想显示作为iOS 8默认的弹出窗口
这是GoogleDrive上项目的链接: https ://drive.google.com/open ? id = 0B6dTvD1JbkgBM3F6RXhjVGFvZmM & authuser =0
您不应该自己创建一个新的UIPopoverPresentayionController
,而应该从提供的控制器中请求该控制器:
var presentationController = popVC.popoverPresentationController
另外,当您这样做时:
presentationController.sourceView = popVC.view
presentationController.sourceRect = popVC.view.frame
您使用了错误的视图和框架。 该视图应该是从中显示弹出窗口的视图,而不是弹出窗口视图,而rect是源视图中显示源的区域(即箭头来自的区域)。
您不需要初始化UIPopoverPresentationController
,您可以从viewcontorller
获取要呈现为UIPopoverPresentationController
引用。
@IBAction func showPopUP(sender: AnyObject) {
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let popVC = storyboard.instantiateViewControllerWithIdentifier("productcontroller")as! ProductController
popVC.modalPresentationStyle = UIModalPresentationStyle.Popover
self.presentViewController(popVC, animated: true, completion: nil)
var presentationController = popVC.popoverPresentationController //Here, you can go with
presentationController!.permittedArrowDirections = UIPopoverArrowDirection.Left | UIPopoverArrowDirection.Right
presentationController!.sourceView = popVC.view
presentationController!.sourceRect = popVC.view.frame
}
享受编码!
首先,您将UIPopoverPresentationControllerDelegate的Deleagte设置为self。 然后将该方法实现为
func adaptivePresentationStyleForPresentationController(PC: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
这告诉您的iPhone将VC强制显示为弹出窗口。
并以与
@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.popoverPresentationController!.delegate = self
let popOverController = popVC.popoverPresentationController
popOverController!.sourceView = sender as! UIView
popOverController!.sourceRect = sender.bounds
popOverController?.permittedArrowDirections = .Any
self.presentViewController(popVC, animated: true, completion: nil)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.