UIPickerView 不显示项目
UIPickerView not showing the items
我几乎是 Swift 的新手,但在使用 UIPickerView
时遇到了问题。问题是这样的:
当我把物品放入选择器时,我成功了,我可以选择了。一切都很完美,但我不知道为什么当我喜欢一两个项目时它们不显示,我必须将它拖下来几次才能看到它,它被选中但问题是我不能看到它:(
这是我的代码:
class LoginViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate{
@IBOutlet var pickerCol: UIPickerView!
@IBOutlet var labelCol: UILabel!
@IBOutlet var textUsuario: UITextField!
@IBOutlet var textPassword: UITextField!
let defaults = NSUserDefaults.standardUserDefaults()
var picker = UIPickerView()
var NumberOfRows = 0
var NamesArray = [String]()
var IdArray = [String]()
var numero = 0
var col : String = ""
override func viewDidLoad() {
pickerCol.delegate = self
pickerCol.dataSource = self
parseJSON()
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func parseJSON(){
let parameters = [
"opcion": "listar_clientes",
"opci_codi" : "320"
]
Alamofire.request(.POST, "http://desarrollo.educalinks.com.ec/mobile/main.php", parameters: parameters).responseJSON { response in
let JSON1 = (response.result.value)
let result = JSON1!["result"] as! NSArray
let dataExample : NSData = NSKeyedArchiver.archivedDataWithRootObject(JSON1!)
NSLog("\(JSON1)")
NSLog("\(result.count)")
for i in 0..<result.count{
let id = result[i]["id"] as AnyObject? as? Int
let texto = result[i]["texto"] as AnyObject? as? String
var idcole = String(id)
self.NamesArray.append(texto!)
self.IdArray.append(idcole)
self.NumberOfRows = self.NamesArray.count
}
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return NumberOfRows
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
labelCol.text=NamesArray[row]
col = IdArray[row]
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if(NamesArray.count != 0){
return NamesArray[row]
}
return nil
}
我花了几个小时试图弄清楚为什么会这样。在此之前,我有 10 个项目的选择器,它正常显示。但是有两个项目没有。感谢您的帮助。
你应该在 for 循环之后调用 pickerCol.reloadAllComponents()
。
我几乎是 Swift 的新手,但在使用 UIPickerView
时遇到了问题。问题是这样的:
当我把物品放入选择器时,我成功了,我可以选择了。一切都很完美,但我不知道为什么当我喜欢一两个项目时它们不显示,我必须将它拖下来几次才能看到它,它被选中但问题是我不能看到它:(
这是我的代码:
class LoginViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate{
@IBOutlet var pickerCol: UIPickerView!
@IBOutlet var labelCol: UILabel!
@IBOutlet var textUsuario: UITextField!
@IBOutlet var textPassword: UITextField!
let defaults = NSUserDefaults.standardUserDefaults()
var picker = UIPickerView()
var NumberOfRows = 0
var NamesArray = [String]()
var IdArray = [String]()
var numero = 0
var col : String = ""
override func viewDidLoad() {
pickerCol.delegate = self
pickerCol.dataSource = self
parseJSON()
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func parseJSON(){
let parameters = [
"opcion": "listar_clientes",
"opci_codi" : "320"
]
Alamofire.request(.POST, "http://desarrollo.educalinks.com.ec/mobile/main.php", parameters: parameters).responseJSON { response in
let JSON1 = (response.result.value)
let result = JSON1!["result"] as! NSArray
let dataExample : NSData = NSKeyedArchiver.archivedDataWithRootObject(JSON1!)
NSLog("\(JSON1)")
NSLog("\(result.count)")
for i in 0..<result.count{
let id = result[i]["id"] as AnyObject? as? Int
let texto = result[i]["texto"] as AnyObject? as? String
var idcole = String(id)
self.NamesArray.append(texto!)
self.IdArray.append(idcole)
self.NumberOfRows = self.NamesArray.count
}
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return NumberOfRows
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
labelCol.text=NamesArray[row]
col = IdArray[row]
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if(NamesArray.count != 0){
return NamesArray[row]
}
return nil
}
我花了几个小时试图弄清楚为什么会这样。在此之前,我有 10 个项目的选择器,它正常显示。但是有两个项目没有。感谢您的帮助。
你应该在 for 循环之后调用 pickerCol.reloadAllComponents()
。