2017-02-18 8 views
0

내가 레이블 데이터를 선택 UIPickerView를 사용하여 클릭 : 나는 내 UIPickerView을 표시 할 라벨을 클릭 만하면표시 UIPickerView는

class BookingOptionsViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    @IBOutlet weak var lblProfile: UILabel! 

    var data = ["1", "2", "3"] 
    var picker = UIPickerView() 

    override func viewDidLoad() { 
     super.viewDidLoad()   
     picker.delegate = self 
     picker.dataSource = self 
     let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureReconizer:))) 
     lblProfile.addGestureRecognizer(tap) 
     lblProfile.isUserInteractionEnabled = true 
    } 

    func tap(gestureReconizer: UITapGestureRecognizer) { 
     print("*") 
     picker.isHidden = false 
    } 

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return data.count 
    }  

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     lblProfile.text = data[row] 
     self.view.endEditing(true) 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return data[row] 
    } 
} 

picker.isHidden = false이 작동하지 않습니다. UIPickerView을 표시하려면 어떻게해야합니까?

+0

@Krill 어디에서 피커를 숨기고 있습니까? 나는 picker.hidden = false가 어디에 있는지 있지만 picker.hidden = true는 어디입니까? –

답변

2

피커 뷰의 설정이 끝나지 않았습니다. 당신이 그것을 만듭니다. 델리게이트와 데이터 소스를 설정했지만 그게 전부입니다. 프레임을 설정해야합니다. 그리고 그것을보기 컨트롤러의보기 (또는 다른 적절한 부모보기)에 추가해야합니다.

+0

@kirill 거기 가면 분명히 당신을 위해 일할 것입니다. –

+0

고맙습니다. – Kirill