使用 swift 在选择器视图中填充解析对象
Populating parse object in picker view with swift
希望有人能帮忙?
我在一个视图上有两个查询。
第一个填充按预期工作的 table。
我想填充 UIPickerView 的第二个查询这让我很伤心:(
在println语句中可以看到结果
如果有人可以提供帮助,将不胜感激
这是代码
class ProfileVC: UIViewController {
var pickerString = NSArray() as AnyObject as [String]
var industryValue = [getIndustries]()
@IBOutlet weak var StoredIndustries: UITableView!
@IBOutlet weak var countryControl: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var query = PFQuery(className:"Industries")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
// query successful - display number of rows found
println("Successfully retrieved \(objects.count) industries")
// print sentences found
for object in objects {
let retrievedIndustries = object["Sector"] as NSString
self.industryValue += [getIndustries(parseIndustry:"\(retrievedIndustries)")]
println("\(retrievedIndustries) ")
}
} else {
// Log details of the failure
println("Error: \(error) \(error.userInfo!)")
}
self.StoredIndustries.reloadData()
}
var query2 = PFQuery(className: "CountryLanguage")
query2.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
println("Successfully retrieved \(objects.count) Countries")
var counter: Int = 0
for object in objects {
var storeString = ""
let retrievedLanguages = object["Language"] as NSString
let retrievedCode = object["Ccode"] as NSString
println("\(retrievedLanguages)" + " - " + "\(retrievedCode)")
storeString = ("\(retrievedLanguages)" + " - " + "\(retrievedCode)")
self.pickerString.insert(storeString, atIndex:counter)
counter = counter + 1
}
//self.countryControl.reloadAllComponents()
}
}
}
提前致谢
您应该在 findObjectsInBackgroundWithBlock
中取消注释 self.countryControl.reloadAllComponents()
,以便您的 `UIPickerView 可以刷新。
您还需要让您的 UIViewControl 扩展 UIViewController,UIPickerViewDataSource
和 UIPickerViewDelegate
。执行以下操作:
class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
}
然后在 viewDidLoad()
方法中,设置 UIPickerView
的委托和数据源
override func viewDidLoad() {
super.viewDidLoad()
countryControl.delgete = self
countryControl.dataSource = self
......}
您还应该为 UIPickerView
实现以下委托方法:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.pickerString.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return self.pickerString[row]
}
希望有人能帮忙? 我在一个视图上有两个查询。 第一个填充按预期工作的 table。 我想填充 UIPickerView 的第二个查询这让我很伤心:(
在println语句中可以看到结果 如果有人可以提供帮助,将不胜感激
这是代码 class ProfileVC: UIViewController {
var pickerString = NSArray() as AnyObject as [String]
var industryValue = [getIndustries]()
@IBOutlet weak var StoredIndustries: UITableView!
@IBOutlet weak var countryControl: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var query = PFQuery(className:"Industries")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
// query successful - display number of rows found
println("Successfully retrieved \(objects.count) industries")
// print sentences found
for object in objects {
let retrievedIndustries = object["Sector"] as NSString
self.industryValue += [getIndustries(parseIndustry:"\(retrievedIndustries)")]
println("\(retrievedIndustries) ")
}
} else {
// Log details of the failure
println("Error: \(error) \(error.userInfo!)")
}
self.StoredIndustries.reloadData()
}
var query2 = PFQuery(className: "CountryLanguage")
query2.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
println("Successfully retrieved \(objects.count) Countries")
var counter: Int = 0
for object in objects {
var storeString = ""
let retrievedLanguages = object["Language"] as NSString
let retrievedCode = object["Ccode"] as NSString
println("\(retrievedLanguages)" + " - " + "\(retrievedCode)")
storeString = ("\(retrievedLanguages)" + " - " + "\(retrievedCode)")
self.pickerString.insert(storeString, atIndex:counter)
counter = counter + 1
}
//self.countryControl.reloadAllComponents()
}
}
}
提前致谢
您应该在 findObjectsInBackgroundWithBlock
中取消注释 self.countryControl.reloadAllComponents()
,以便您的 `UIPickerView 可以刷新。
您还需要让您的 UIViewControl 扩展 UIViewController,UIPickerViewDataSource
和 UIPickerViewDelegate
。执行以下操作:
class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
}
然后在 viewDidLoad()
方法中,设置 UIPickerView
override func viewDidLoad() {
super.viewDidLoad()
countryControl.delgete = self
countryControl.dataSource = self
......}
您还应该为 UIPickerView
实现以下委托方法:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.pickerString.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return self.pickerString[row]
}