2017-06-22 60 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 

// -------

正確的方向任何提示將不勝感激。 工作的樣品將是很大的幫助

我想實現如下

dropdwon 1

dropdown 2

回答

1

UPDATE

有一個有用的library你可能想給一試。


這是因爲你的pop.delegate分配你目前的filterVC後。

移動這個

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

filterVC的初始化應該做的伎倆。順便說一句,我沒有看到你爲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