2017-02-18 41 views
0

Я использую 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] 
    } 
} 

Когда я нажимаю на этикетке, я хочу показать мою UIPickerView, но picker.isHidden = false не работает. Что делать, чтобы отображать UIPickerView?

+0

@Krill, где вы скрываете свой сборщик. Я имею в виду picker.hidden = false, но где picker.hidden = true? –

ответ

2

Вы никогда не завершаете настройку режима выбора. Вы его создаете. Вы устанавливаете его делегат и источник данных, но это все. Вам нужно установить его фрейм. И вам нужно добавить его в представление контроллера представления (или какое-либо другое соответствующее родительское представление).

override func viewDidLoad() { 
    super.viewDidLoad()   

    var pickerRect = picker.frame 
    pickerRect.origin.x = // some desired value 
    pickerRect.origin.y = // some desired value 
    picker.frame = pickerRect 
    picker.delegate = self 
    picker.dataSource = self 
    picker.isHidden = true 
    view.addSubview(picker) 

    let tap = UITapGestureRecognizer(target: self, action: #selector(tap(gestureReconizer:))) 
    lblProfile.addGestureRecognizer(tap) 
    lblProfile.isUserInteractionEnabled = true 
} 
+0

@ kirill, там вы идете, это определенно сработает для вас. –

+0

Большое спасибо – Kirill