gpt4 book ai didi

ios - 在 Swift 中实现 PopOver

转载 作者:搜寻专家 更新时间:2023-11-01 05:40:22 24 4
gpt4 key购买 nike

我想在不使用 nib 的情况下显示弹出菜单。我不喜欢使用 nib,因为实现简单功能的委托(delegate)令人头疼。我成功地将 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)")

}


}

Apple doc

Popover controllers are for use exclusively on iPad devices. Attempting to create one on other devices results in an exception.

我在真实设备 iphone-6 上测试过它,它工作正常..我喜欢这个 Popover

我应该根据 apple 文档使用 Popover 吗?由于它在 iphone 中运行良好,我的应用程序会因为以后使用它而被拒绝吗?

最佳答案

Since iOS8 we are now able to create popovers, that will be the same on iPhone, as on iPad, which would be especially awesome for those who make universal apps, thus no need to make separate views or code.

来源:UIPopoverController for iphone not working?

看看这个答案:

https://stackoverflow.com/a/14789022/3202193

https://stackoverflow.com/a/30418212/3202193

iOS 9 的每个版本文档中他们还说:

UIPopoverController 类用于管理弹出窗口中内容的呈现。您使用弹出窗口来临时显示信息。弹出框内容叠加在现有内容之上,背景自动变暗。弹出窗口保持可见,直到用户点击弹出窗口外部或您明确关闭它。 Popover Controller 专供 iPad 设备 使用。尝试在其他设备上创建一个会导致异常。

编辑

我想你用过 UIPopoverPresentationController在 iOS 8.0 及更高版本中可用。

UIPopoverControllerUIPopoverPresentationController是 Apple 提供的两种不同的东西。

关于ios - 在 Swift 中实现 PopOver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com