我目前遇到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服務中檢索「問題」。我假定你的代碼中的「問題」是你想要顯示的問題標籤。 –
好的,謝謝,以及在選擇器視圖中選擇行的功能怎麼樣 –