2017-06-21 44 views
0

創建一個SingleViewApplication,我已經放置了一個按鈕。PopoverPresentationController作爲零

現在點擊按鈕我需要顯示一個tableView作爲彈出窗口。 TableViewController是在xib中創建的。

問題是tableViewController.popoverPresentationController總是正值零見下文代碼

 let filterVC = TableViewController(nibName: "TableViewController", bundle: nil) 
    var filterDistanceViewController = UINavigationController(rootViewController: filterVC) 
    filterDistanceViewController.preferredContentSize = CGSize(width: 300, height: 200) 
    let popoverPresentationViewController = filterDistanceViewController.popoverPresentationController 
    popoverPresentationViewController?.permittedArrowDirections = .any 


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

在上面的代碼 filterDistanceViewController.popoverPresentationController總是來作爲零

在正確的方向的任何暗示將高度讚賞。

+0

你是否在界面生成器上將你的VC設置爲root?通過檢查使箭頭出現的框來指示哪一個是您的根視圖控制器。 – Pochi

+0

放置按鈕的ViewCtr是rootviewCtr。我是否需要將TableVC作爲rootVC? – Ekra

回答

1

你沒有任何介紹,所以你需要對當前的ViewController呈現popoverPresentationViewController,例如:

@IBAction func importantButtonPressed(_ sender: UIButton) { 
     let tableViewController = UITableViewController() 
     tableViewController.modalPresentationStyle = .popover 

     present(tableViewController, animated: true, completion: nil) 

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

    } 
1

你可以做像下面。

@IBAction func popoverBtnPressed(_ sender: Any) { 

    let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController2") 
    vc2.modalPresentationStyle = .popover 
    vc2.popoverPresentationController?.delegate = self 
    vc2.popoverPresentationController?.barButtonItem = popoverBtn 
    vc2.popoverPresentationController?.sourceRect = .zero 
    present(vc2, animated: true, completion: nil) 
} 
0

,直到你設置你的VC一個modalPresentationStyle,該popoverPresentationController屬性爲nil。確保在訪問之前設置modalPresentationStyle

相關問題