hello guys I'm trying to make some util that I need like Pokedex kk
but I have some problem. I make the picker in separate view and I call that view in tabview and use it.
but I don't know how to set the data. If I make picker in uiviewcontroller I can set data in didload? method but in uiview there are no didload method that I can set.
this is my code
SelectPoke.swift
class SelectPoke: UIView , UIPickerViewDelegate , UIPickerViewDataSource{
@IBOutlet var textField: UITextField!
var data = ["1","2","3"]
var picker = UIPickerView()
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return data.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField.text = data[row]
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
func h(){
picker.delegate = self
picker.dataSource = self
}
override func awakeFromNib() {
h()
}
class func instanceFromNib() -> UIView {
return UINib(nibName: "SelectPoke", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView
}
}
Tab1ViewController.swift
class Tab1ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sideView = SelectPoke.instanceFromNib()
sideView.frame = self.view.frame
self.view.addSubview(sideView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
plz help me. my Pokemon is waiting..
Typically, you would not subclass UIPickerView
, but create a view in a Storyboard (or XIB-file) and
connect the delegate and data source with the Tab1ViewController
.
Nevertheless, in this code we'll just create a new UIPickerView
in viewDidLoad
, to keep the code similar to the original question
Remark: Currently I have no Xcode running, so there might be small syntactial errors in this code example
class Tab1ViewController: UIViewController, UIPickerViewDelegate , UIPickerViewDataSource {
var data = ["1","2","3"]
override func viewDidLoad() {
super.viewDidLoad()
let sideView = UIPickerView()
sideView.frame = self.view.frame
self.view.addSubview(sideView)
sideView.delegate = self
sideView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
public func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return data.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
textField.text = data[row]
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[row]
}
}