UIPopoverPresentationController

时间:2015-05-18 15:51:56

标签: xcode swift ios8 uipresentationcontroller

我是swift的新手并试图了解如何使用UIPopoverPresentationController

我的应用程序需要的是,当按下按钮时,屏幕按钮上的弹出按钮将在屏幕的一半显示 xib 文件。 现在发生的事情是我设法转向第二个视图控制器,但不知道如何加载 xib 文件以及如何使弹出按钮成为屏幕的一半。这是我的代码

import UIKit

class BaseViewController: UIViewController , UIPopoverPresentationControllerDelegate {

    @IBAction func moveToPopoverView(sender: UIButton) {
      var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Popover") as! UIViewController
      popoverViewController.modalPresentationStyle = .Popover
      popoverViewController.preferredContentSize   = CGSizeMake(200, 200)

      let popoverPresentationViewController = popoverViewController.popoverPresentationController

      popoverPresentationViewController?.permittedArrowDirections = .Any
      popoverPresentationViewController?.delegate = self

      presentViewController(popoverViewController, animated: true, completion: nil)
    }

   override func viewDidLoad() {
      super.viewDidLoad()       
   }    
}

1 个答案:

答案 0 :(得分:5)

实现这一目标的最简单方法是通过故事板弹出式演示文稿segue。它将为您处理呈现的视图控制器实例化。

  1. 将popover演示文稿segue添加到将显示弹出窗口的按钮。给segue一个标识符。这将处理将popover锚定到按钮:
  2. Popover presentation segue from (titleView) button

    1. 为呈现的视图控制器设置故事板演示文稿详细信息。我为tableView控制器(嵌入在导航控制器中)选择了 Page Sheet 演示文稿。
    2. (Page sheet) presented view controller

      1. 添加prepareForSegue:sender:代码,将任何参数传递给您呈现的视图控制器。 (我还没有学过Swift ......对于Objective C抱歉。)
      2.     - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)__unused sender {
                if ([[segue identifier] isEqualToString:@"showBIBLESelectBookChapter"]) {
                    UINavigationController *navigationController = segue.destinationViewController;
                    if ([navigationController.topViewController isKindOfClass:[BIBLESelectViewController class]]) {
                        BIBLESelectViewController *selectViewController = (BIBLESelectViewController *)navigationController.topViewController;
                        selectViewController.initialBookChapterVerse = self.bookChapterVerse;
                    }
                    UIPopoverPresentationController *popoverPresentationController = navigationController.popoverPresentationController;
                    popoverPresentationController.delegate = self;
                }
            }

        segue将为您完成所有实际工作,实例化,呈现和锚定popover视图控制器。

        Presented popover view controller

        您应该可以设置内容大小,以便弹出窗口为半屏。