Reputation: 269
In this I try to load picker view with data but not able to load data and it is showing as shown in below image that only empty picker view is displaying i was trying from a long time can any one help me what's wrong in implementing ?
var firstName : String = ""
var lastName : String = ""
var mobileNumber : Int = 0
var email : String = ""
var defaultValue = 1
let url = "http://www.json-generator.com/api/json/get/bPmyumGWeW?indent=2"
var dateofbirth : String = ""
var Gender : String = ""
var genderArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
let picker = UIPickerView()
picker.isHidden = true
picker.delegate = self
DateofBirthTextfield.delegate = self
selectGenderTextField.inputView = picker
MyaccountJsonWithURL()
genderArray = ["Male","Female"]
}
func MyaccountJsonWithURL() {
let url = NSURL(string: self.url)
URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {
// print(jsonObj!.value(forKey: "Detail"))
if let profileArray = jsonObj!.value(forKey: "profile") as? NSArray {
for array in profileArray {
if let profileDict = array as? NSDictionary {
if let firstName = profileDict.value(forKey: "first name"){
self.firstName.append(firstName as! String)
}
if let lastName = profileDict.value(forKey: "last name"){
self.lastName.append(lastName as! String)
}
self.mobileNumber = profileDict.value(forKey: "mobile") as! Int
print(self.mobileNumber)
if let emailId = profileDict.value(forKey: "email"){
self.email.append(emailId as! String)
}
self.dateofbirth = profileDict.value(forKey: "dob") as! String
if let gender = profileDict.value(forKey: "gender"){
self.Gender.append(gender as! String)
}
}
}
}
OperationQueue.main.addOperation({
self.FirstNameTextfield.text = self.firstName
self.LastNameTextfield.text = self.lastName
self.MobileNumberTextfield.text = String(describing: self.mobileNumber)
self.EmailIdTextfield.text = self.email
self.DateofBirthTextfield.text = String(describing: self.dateofbirth)
self.selectGenderTextField.text = self.Gender
})
}
}).resume()
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return genderArray.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return genderArray[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
selectGenderTextField.text = genderArray[row]
self.view.endEditing(false)
}
Upvotes: 2
Views: 274
Reputation: 3405
In viewDidLoad
you set picker as hidden
. Set picker.isHidden = false
to display it
Upvotes: 0