首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPopoverPresentationController Swift

UIPopoverPresentationController Swift
EN

Stack Overflow用户
提问于 2014-09-04 23:42:34
回答 2查看 8.1K关注 0票数 0

我使用的是故事板和AutoLayout。有两个场景,一个是我的主视图控制器,带有一个工具栏和几个UIBarButtonItems,另一个是一个UIViewController,应该只显示一个UILabel。当用户点击我的主视图控制器中的工具栏时,我用以下代码显示弹出窗口:

代码语言:javascript
复制
func presentPopover(viewCtrl: UIViewController, item: UIBarButtonItem) {
viewCtrl.modalPresentationStyle = .Popover
let popover: UIPopoverPresentationController = viewCtrl.popoverPresentationController!
popover.permittedArrowDirections = .Any
popover.barButtonItem = item
self.presentViewController(viewCtrl, animated: true, completion: nil)
}

helpView = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HelpView“) as? HelpVC
if helpView != nil {
    presentPopover(helpView!, helpButton)
}

显示视图,但没有可见的子视图(UILabel)。同样奇怪的行为也会发生,当我设置故事板segues而不是从代码中进行popover演示时。然而,当我在我的UINavigationController上推送完全相同的视图时,一切都显示得很好。我是不是遗漏了什么?

致以最好的问候,奥利弗

EN

回答 2

Stack Overflow用户

发布于 2014-10-02 21:54:38

将大小调整为所需大小。如果传入的话,可以设置barbutton而不是sourceView。

代码语言:javascript
复制
    if let controller = viewCtrl {
        controller.preferredContentSize = CGSizeMake(200,25)
        controller.modalPresentationStyle = UIModalPresentationStyle.Popover
        if let popover = controller.popoverPresentationController  {
            popover.delegate = self
            popover.sourceView = viewCtrl.view
            popover.sourceRect = CGRectMake(0,-5, 50, 50)
            popover.permittedArrowDirections = .Any
            self.presentViewController(controller, animated: true, completion: nil)
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2017-04-20 18:55:31

最佳教程click here

  • 为弹出菜单创建一个XIB和swift文件。(例如MenuViewController)
  • create用于显示弹出菜单的另一个xib或情节提要视图控制器文件。(例如ViewController)
  • in viewController文件add UIPopoverPresentationControllerDelegate
  • add button in ViewController并创建IBAction并编写以下代码。

代码语言:javascript
复制
@IBAction func onClickMenu(_ sender: UIButton)
    {
        if btnMenu.isSelected
        {
            btnMenu.setImage(UIImage(named: "arrow_orange"), for: UIControlState.normal)

            btnMenu.isSelected = false

            self.dismiss(animated: true, completion: nil)
        }
        else
        {
            btnMenu.setImage(UIImage(named: "up_arrow_orange"), for: UIControlState.normal)

            btnMenu.isSelected = true

            let popMenu = MenuViewController(nibName: "MenuViewController", bundle: nil)
            popMenu.modalPresentationStyle = UIModalPresentationStyle.popover

            popMenu.preferredContentSize = CGSize.init(width: 320, height: 265)

            popMenu.vcPush = self

            self.present(popMenu, animated: true, completion: nil)

            let popController :  UIPopoverPresentationController = popMenu.popoverPresentationController!

            popController.permittedArrowDirections = UIPopoverArrowDirection.up

            popController.delegate = self

            //popController?.barButtonItem = nil

            popController.sourceView = self.view

            popController.sourceRect = CGRect.init(x: 525, y: 30, width: 10, height: 10)
        }
    }

最佳教程click here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25669664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档