我知道如何按照 this answer 中的描述从条形按钮项目中呈现弹出窗口(适用于 iPhone 和 iPad)。
我想为任意 anchor 添加一个弹出框。我看到的其他 SO 答案是针对栏按钮项或在 Objective-C 中。
我刚刚学会了如何做,所以我在下面添加了我自己的答案。
最佳答案
针对 Swift 3 进行了更新
在 Storyboard中,添加一个您希望作为弹出窗口的 View Controller 。将 Storyboard ID 设置为“popoverId”。
同时向主视图 Controller 添加一个按钮,并将 IBAction 连接到以下代码。
import UIKit
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
@IBAction func buttonTap(sender: UIButton) {
// get a reference to the view controller for the popover
let popController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popoverId")
// set the presentation style
popController.modalPresentationStyle = UIModalPresentationStyle.popover
// set up the popover presentation controller
popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up
popController.popoverPresentationController?.delegate = self
popController.popoverPresentationController?.sourceView = sender // button
popController.popoverPresentationController?.sourceRect = sender.bounds
// present the popover
self.present(popController, animated: true, completion: nil)
}
// UIPopoverPresentationControllerDelegate method
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
// Force popover style
return UIModalPresentationStyle.none
}
}
设置 sourceView
和 sourceRect
允许您选择任意点来显示弹出窗口。
就是这样。现在当点击按钮时它应该像这样。
感谢this article寻求帮助。
关于ios - 从 Swift 中的任意 anchor 呈现弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797836/