2017-06-22 20 views
2

クリックすると小さなUItableViewが表示され、リストにいくつかの数字が表示されます。ドロップダウンリストios swift

popoverPresentationControllerを使用しようとしましたが、iOS(iPhone)デバイスの全画面表示になります。以下

同一のコードである - にも方法以下で

func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { 
    // Return no adaptive presentation style, use default presentation behaviour 
    return .none 
} 

// -----

let filterVC = TableViewController(nibName: "TableViewController", bundle: nil) 
       filterVC.preferredContentSize = CGSize(width: 300, height: 200) 

    filterVC.modalPresentationStyle = UIModalPresentationStyle.popover 

    present(filterVC, animated: true, completion: nil) 
    let popoverPresentationController = filterVC.popoverPresentationController 

    if let pop = filterVC.popoverPresentationController { 
     pop.delegate = self 
    } 

     popoverPresentationController?.sourceView = sender as? UIView 
    popoverPresentationController?.sourceRect = sender.frame 

// -------

正しい方向へのヒントは高く評価されます。 作業サンプルは、あなたが与えたいことがあり便利libraryがあり

dropdwon 1

dropdown 2

答えて

1

UPDATE

以下のように私が達成しようとしています何

大いに参考になります試してみる。


あなたがfilterVCを提示した後、あなたのpop.delegateが割り当てられていたからです。あなたのfilterVCの初期化にこの

if let pop = filterVC.popoverPresentationController { 
    pop.delegate = self 
    pop.sourceView = sender 
    pop.sourceRect = sender.bounds 
} 
present(filterVC, animated: true, completion: nil) 

移動は、トリックを行う必要があります。 Btw、popoverPresentationControllerの場合はsourceViewsourceRectと割り当てられていませんでした。この部分へのpop.delegate = selfの移動は適切であるはずです。

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 
} 
+0

ような何か、私はそれを実行しようとしましたが、ゼロで問題になったいたが、私はあなたが '存在を動かす意味https://stackoverflow.com/questions/44666281/popoverpresentationcontroller-coming-as-nil/44668202#44668202 – Ekra

+0

を参照してください。 (filterVC、animated:true、completion:nil) '〜に' pop.delegate'を設定します。あなたはこれを試しましたか?あなたは私の編集された答えをチェックすることができます。 – Lawliet