2016-03-27 6 views
2

私はpopoverPresentationControllerDidDismissPopoverを使うことができますが、ユーザーがポップオーバービューの外をタップしてそれを却下した場合にのみ呼び出されます。 ポップオーバーを手動で解除すると(ポップオーバーのViewControllerのself.dismissViewControllerAnimated(true, completion: nil))何も起こりません。ポップオーバーを検出する

+0

'popoverPresentationControllerDidDismissPopover'と' self.dismissViewControllerAnimated(true、completion:nil) 'を呼び出す場所の両方で実行して呼び出す必要があるコードを含む新しい関数をいつでも作成できます。 –

+1

ポップオーバーの下にあるビューコントローラでコードを実行する必要があり、ポップオーバーからそのコードを実行しようとするとエラーが発生するため、最初のビューコントローラのIBOutletが参照できないため、アクティブです。私はあなたが私が何を意味するのか理解してくれることを願っています – Pixel

+0

これは私もちょっと混乱しましたが、http://stackoverflow.com/a/32021691/708928でデリゲートのサンプルコードがこの問題を解決するために啓発され有用でした。 – Logg

答えて

1

Popover Dismiss!

ポップオーバーを検出するには、次の2つの方法があります。 1.実際に生成されたmainViewControllerでの検出は、ParentViewControllerを意味します。

パーソナル主生成

class ViewController: UIViewController, UITableViewDataSource, 
UITableViewDelegate, UIPopoverPresentationControllerDelegate { 

としてparentViewControllerを使用

そして今popOverViewが行わ処理するために使用されるコントローラで検出するこれらの機能

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



func popoverPresentationControllerDidDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) { 

     print("Popover dismisssed") 
    } 
  • を実装ストーリーボードで。

    func dismiss() { 
    
    self.dismiss(animated: true, completion: nil) 
    print("DISMISSS") 
    
    } 
    
    @IBAction func cancelClicked(_ sender: Any) { 
    
        dismiss() 
    } 
    
  • 注:ストーリーボードについてあなたはさらに詳細を求めることができます。

    +0

    それも私のために働いた。 –

    関連する問題