我目前遇到pickerview的问题,因为当我单击应用程序时,选择器视图未从Web服务加载的玩法测验。选择器视图应显示来自Web服务的答案数组。选择器视图是空的任何想法?另外问题是不是从Web服务加载为文本标签?选择器视图不加载项目
class QuestionsViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var usernamelabel: UILabel!
@IBOutlet weak var itemlabel: UILabel!
@IBOutlet weak var Question: UILabel!
@IBOutlet weak var pickerview: UIPickerView!
public var totalQuestions: Int = 0
public var currentQuestion = 0
public var totalCorrect: Int = 0
var itemSelected: String = ""
@IBOutlet weak var share: UIButton!
var LabelText = String()
var listQuestions = [[String: Any]]()
var titles: [String] = []
var qnames: String = ""
@IBOutlet weak var Next: UIButton!
var quiz = QuestionList()
override func viewDidLoad() {
super.viewDidLoad() //when the app is loaded
let url:String = "https://api.mlab.com/api/1/databases/quiz/collections/question?apiKey=NT28RNl6jX3Ys0x5GJZ6mMSRQEcb_6KA"
let urlRequest = URL(string: url)
URLSession.shared.dataTask(with: urlRequest!, completionHandler: {
(data, response, error) in
if(error != nil){
print(error.debugDescription)
}
else{
do{
self.listQuestions = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [[String:AnyObject]]
print(self.listQuestions)
for elements in self.listQuestions {
for object in elements {
if object.key == "Answers" {
if let answers = object.value as? [String] {
self.titles = answers
}
if object.key == "Questions" {
if let questions = object.value as? String {
self.qnames = questions
}
}
}
}
}
self.pickerview.reloadAllComponents()
}catch let error as NSError{
print(error)
}
}
}).resume()
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1 //return one component from the picker
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return titles.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) ->String?{
return self.titles[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
itemSelected = QuestionList.getDummyQuestions()[currentQuestion].answers[row]
}
@IBAction func btnShareClicked(_ sender: Any) {
if SLComposeViewController.isAvailable(forServiceType: SLServiceTypeFacebook) {
let fbShare:SLComposeViewController = SLComposeViewController(forServiceType:SLServiceTypeFacebook)
fbShare.setInitialText("You Scored " + itemlabel.text! + " on the IT Quiz")
self.present(fbShare, animated:true, completion:nil)
} else {
let alert = UIAlertController(title: "Account", message: "Please login to Facebook",
preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler:nil))
self.present(alert, animated: true, completion: nil)
}
}
}
由于这是工作,但我怎么得到这个问题的标签,从Web服务出现。这个在Web服务中的名字是“Questions”?谢谢 –
我刚刚更新了答案。现在,您可以从Web服务中检索“问题”。我假定你的代码中的“问题”是你想要显示的问题标签。 –
好的,谢谢,以及在选择器视图中选择行的功能怎么样 –