Popover 图片库在 iPad iOS Swift 中不起作用
Popover image gallery not working in iPad iOS Swift
最近我的应用被应用审核拒绝了,因为我没有使用 Popover。
然后我将编码更改为以下内容。但我仍然没有在模拟器中弹出 window。
总是变得正常 iPhone 照片选择方法,它使应用程序崩溃。
它甚至不打印 "working"。
@IBAction func chooseGallery(sender: UIBarButtonItem) {
imagePicker.sourceType = .PhotoLibrary
//imagePicker.modalPresentationStyle = .Popover
//presentViewController(imagePicker, animated: true, completion: nil)//4
//imagePicker.popoverPresentationController?.barButtonItem = sender
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
self.presentViewController(imagePicker, animated: true, completion: nil)
}
else {
println("Working")// to test this part
imagePicker.modalPresentationStyle = .Popover
presentViewController(imagePicker, animated: true, completion: nil)//4
imagePicker.popoverPresentationController?.barButtonItem = (sender)
imagePicker.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Up
imagePicker.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)
}
}
您的代码经过一些修改对我来说工作正常,在下面的示例中,我将像您一样只为 iPad 显示一个 Popover。
@IBAction func showNextViewController(sender: UIBarButtonItem) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("NextViewController") as! NexViewController
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
self.presentViewController(nextViewController, animated: true, completion: nil)
}
else {
nextViewController.modalPresentationStyle = .Popover
presentViewController(nextViewController, animated: true, completion: nil)
if let popover = nextViewController.popoverPresentationController {
popover.barButtonItem = sender
popover.permittedArrowDirections = UIPopoverArrowDirection.Up
// to set it size
nextViewController.preferredContentSize = CGSizeMake(200,500)
}
}
}
因为我不知道 UIViewController
的 class 你想展示的是我自己做了一个,里面什么都没有,我在 @IBAction
中实例化了它避免保留对它的引用(仅用于测试目的)。
只是一些观察:
当您要显示弹出窗口时,您只需设置以下两个选项之一:
barButtonItem
sourceView
、sourceRect
在上面的例子中就像你设置了 barButtonItem
你不需要更多的东西。
希望对你有所帮助。
试试这个,
picker.modalPresentationStyle = .CurrentContext
最近我的应用被应用审核拒绝了,因为我没有使用 Popover。 然后我将编码更改为以下内容。但我仍然没有在模拟器中弹出 window。
总是变得正常 iPhone 照片选择方法,它使应用程序崩溃。
它甚至不打印 "working"。
@IBAction func chooseGallery(sender: UIBarButtonItem) {
imagePicker.sourceType = .PhotoLibrary
//imagePicker.modalPresentationStyle = .Popover
//presentViewController(imagePicker, animated: true, completion: nil)//4
//imagePicker.popoverPresentationController?.barButtonItem = sender
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
self.presentViewController(imagePicker, animated: true, completion: nil)
}
else {
println("Working")// to test this part
imagePicker.modalPresentationStyle = .Popover
presentViewController(imagePicker, animated: true, completion: nil)//4
imagePicker.popoverPresentationController?.barButtonItem = (sender)
imagePicker.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Up
imagePicker.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)
}
}
您的代码经过一些修改对我来说工作正常,在下面的示例中,我将像您一样只为 iPad 显示一个 Popover。
@IBAction func showNextViewController(sender: UIBarButtonItem) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("NextViewController") as! NexViewController
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
self.presentViewController(nextViewController, animated: true, completion: nil)
}
else {
nextViewController.modalPresentationStyle = .Popover
presentViewController(nextViewController, animated: true, completion: nil)
if let popover = nextViewController.popoverPresentationController {
popover.barButtonItem = sender
popover.permittedArrowDirections = UIPopoverArrowDirection.Up
// to set it size
nextViewController.preferredContentSize = CGSizeMake(200,500)
}
}
}
因为我不知道 UIViewController
的 class 你想展示的是我自己做了一个,里面什么都没有,我在 @IBAction
中实例化了它避免保留对它的引用(仅用于测试目的)。
只是一些观察:
当您要显示弹出窗口时,您只需设置以下两个选项之一:
barButtonItem
sourceView
、sourceRect
在上面的例子中就像你设置了 barButtonItem
你不需要更多的东西。
希望对你有所帮助。
试试这个,
picker.modalPresentationStyle = .CurrentContext