2017-07-05 24 views
1

我想在iPhone上點擊一個以編程方式創建的按鈕時出現彈出窗口。但是,我卻發現彈窗正在接管整個屏幕。我已經在popover視圖控制器的類中編碼了以下內容:iPhone上的彈出窗口(Swift 3)從編程式創建按鈕

import UIKit 

class GroupSetsPopoverController: UIViewController, UIPopoverPresentationControllerDelegate { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.preferredContentSize = CGSize(width: 375, height: 162) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "infoButtonSegue" { 
     let popoverViewController = segue.destination as! GroupSetsPopoverController 

     let pvc = popoverViewController.popoverPresentationController 
     pvc?.delegate = self 

     //popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover 
     //popoverViewController.popoverPresentationController!.delegate = self 
    } 
} 

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

任何指導將不勝感激。我試圖按照Stack Overflow中的各種教程和帖子,無濟於事。

+0

是'GroupSetsPopoverController'了''popover'或viewController'的'controller'試圖提出一個''popover' viewController'? –

+0

通過說「接管整個屏幕」,你的意思是popover顯示正常,但背景視圖模糊,或彈出不能正確顯示,背景視圖是黑色的? – Lawliet

+0

Harry Singh,GroupSetsPopoverControllee是popover viewcontroller。 – Jess

回答

0

您可以檢查出你引用answerlibrary。如果GroupSetsPopoverController是你的酥料餅的ViewController,你可以做這樣的事情:

init(for sender: UIView)) { 
    super.init(nibName: nil, bundle: nil) 

    modalPresentationStyle = .popover 
    guard let pop = popoverPresentationController else { return } 
    pop.sourceView = sender 
    pop.sourceRect = sender.bounds 
    pop.delegate = self 
}