2017-07-05 4 views
1

プログラムで作成したボタンをクリックすると、iPhone上にポップオーバーが表示されます。しかし、私は代わりにpopoverが画面全体を引き継いでいることを発見しています。私は今までにPopover View Controllerのクラスで次のコードをコーディングしました:プログラムで作成したボタンから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 
} 
} 

ガイダンスを読んでいただければ幸いです。スタックオーバーフローに関するさまざまなチュートリアルや記事をここでは取り上げようとしましたが、無駄です。

+0

です '' 'popover' viewController'かをGroupSetsPopoverController'' '' popover' viewController'を提示しようとしてcontroller'? –

+0

「画面全体を占領する」とは、通常のようにポップオーバーが表示されますが、背景がぼやけているか、ポップオーバーが正しく表示されず、背景が黒く表示されていますか? – 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 
} 
関連する問題