斯威夫特:如何创建iOS中弹出菜单

问题描述 投票:3回答:3

我在做一个自定义的UIView帆布一些绘图,而不是在视图的底部有一组按钮,允许用户选择的形状,我想有用户做长按手势,然后让一个弹出式菜单中会出现不同形状,他们可以选择。我没有看到这样的事情在Xcode,但我认为有这样的事情在iOS版。我不想警报弹出窗口,显示了当你有低电量和通知。

我已经研究过使用UIPopoverController但我有点困惑了一些我读过关于它的其他堆栈溢出的问题,也对苹果给出的文档。

ios swift uipopovercontroller uipopover
3个回答
0
投票

您作出这样的按钮与的viewController和酥料饼的连接作为赛格瑞后,您将需要准备。这是为了为酥料饼SEGUE准备下面的代码。

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if let identifier = segue.identifier
    {
        switch identifier
        {
            case History.SegueIdentifier:

            if let tvc = segue.destinationViewController as? TextViewController
            {
                if let ppc = tvc.popoverPresentationController
                {
                    ppc.delegate = self
                }
                tvc.text = "\(diagnosticHistory)"
            }

            default: break
        }
    }
}

千万记住,如果你有一个iPhone的酥料饼将采取全屏幕,使您可以修复使用此对我们说,需要一些特定的要素的案文。

这将解决酥料饼是你在你的文字具备的要素的尺寸完全相同。

@IBOutlet weak var textView: UITextView!
{
    didSet
    {
        textView.text = text
    }
}

var text : String = ""
{
    didSet
    {
        textView?.text = text
    }
}

override var preferredContentSize : CGSize
{
    get
    {
        if textView != nil && presentingViewController != nil
        {
            return textView.sizeThatFits(presentingViewController!.view.bounds.size)
        }
        else
        {
            return super.preferredContentSize
        }
    }

    set {super.preferredContentSize = newValue}

    }
}

我有那些2在不同的视图控制器,但我想它会奏效。您还需要实现UIPopoverPresentationControllerDelegate

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}

你的第一个的viewController。


0
投票

我用Masture的方法上面,它的工作对我来说(谢谢!),但一对夫妇的其他新手像我这样的说明:

(1)确保你把“ShowMenuSegue”(或者不管你选择)作为标识符在故事板的SEGUE,并

(2)我不得不添加

var delegate: MainViewController!

在MenuViewController(与MainViewController是您的源视图控制器),以获得tvc.delegate = self工作


0
投票

Floating Menu我所描述的步骤来实现浮动菜单如上面的图像:

  1. 创建一个从segue barButtonItem对2型MenuViewCobtroller“存在酥料饼”
  2. MenuViewController覆盖preferredContentSize为: override var preferredContentSize : CGSize { get { return CGSize(width: 88 , height: 176) } set { super.preferredContentSize = newValue } }

以我为例,我回到CGSize宽度为100和200的尺寸可以设置这些值,以便正确地满足您的浮动菜单内容。 4.在初始/源视图控制器,在设定作为prepare(for segue: sender) self委托popoverPresentationController方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ShowMenuSegue" {
        if let tvc = segue.destination as? MenuViewController
        {
            tvc.delegate = self
            if let ppc = tvc.popoverPresentationController
            {
                ppc.delegate = self
            }
        }
    }
}

源视图控制器必须符合UIPopoverPresentationControllerDelegate和实现下面的方法:

extension ViewController: UIPopoverPresentationControllerDelegate {

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return UIModalPresentationStyle.none
    }
}

而已。你有浮动菜单。希望这将是有益的。

© www.soinside.com 2019 - 2024. All rights reserved.