2016-12-27 9 views
4

Swift에서 탐색 막대의 오른쪽 상단에있는 막대 버튼 항목에서 팝업 표시를 표시하려고합니다. 다음은 내 코드입니다.iPhone의 탐색 표시 줄에서 막대 버튼으로 팝업을 표시합니다.

func showOptions(sender: UIBarButtonItem) { 
    let optionsVC = OptionsViewController(nibName: "OptionsViewController", bundle: nil) 
    optionsVC.delegate = self 
    optionsVC.modalPresentationStyle = .popover 
    optionsVC.preferredContentSize = CGSize(width: 200, height: 200) 

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

    let popController = optionsVC.popoverPresentationController 
    popController?.permittedArrowDirections = .up 
    popController?.delegate = self 
    popController?.barButtonItem = sender 
} 

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

iPad 및 iPhone에서 잘 작동합니다. 문서와 다른 웹 페이지를 살펴 보았습니다. 모든 것이 옳은 것처럼 보입니다. 내 코드에 무엇이 없습니까?

답변

6

유일한 문제는 팝업 위임자를 설정하기 전에 OptionsViewController을 제시 한 것입니다. 먼저 delegate를 설정 한 다음 present 함수를 호출하십시오.

let popController = optionsVC.popoverPresentationController 
popController?.permittedArrowDirections = .up 
popController?.delegate = self 
popController?.barButtonItem = sender 

present(optionsVC, animated: true, completion: nil) 
+0

고마워요. 많은 블로그가 내가 구현 한 방식을 보여줍니다. – Satyam