UIPopoverPresentationController

use*_*422 3 xcode swift ios8 uipresentationcontroller

我是新手,试图了解如何使用UIPopoverPresentationController.

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

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()       
   }    
}
Run Code Online (Sandbox Code Playgroud)

小智 5

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

  1. 将popover演示文稿segue添加到将显示弹出窗口的按钮.给segue一个标识符.这将处理将popover锚定到按钮:

Popover演示文稿来自(titleView)按钮

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

(页面表)呈现视图控制器

  1. 添加prepareForSegue:sender:代码以将任何参数传递给您呈现的视图控制器.(我还没学过Swift ......抱歉,目标C.)
    - (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视图控制器.

提出了popover视图控制器

您应该可以设置内容大小,以便弹出窗口是半屏幕.