2017-11-01 7 views
0

Ich versuche eine Picker-Ansicht mit einer Liste von Zahlen zu erhalten.Pickerview-Inhalt wird nicht angezeigt

Bis jetzt kann ich die Zeichenfolge erhalten, um alle Zahlen zu halten, aber wenn es darum geht, es in die Picker-Ansicht zu setzen, ist die Picker-Ansicht immer leer. Kannst du mir bitte meinen Code ansehen und mich wissen lassen, wo ich falsch liege?

import Foundation 
import UIKit 

class PickerView: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 
    @IBOutlet weak var questionNumberPickers: UIPickerView! 

    var Category: String! 
    var numbDict: String! 
    var QuestionNumber: String! 
    var cell: UITableViewCell? 
    var currentTopicIndex = Int() 
    var setCount = Int() 
    var setNumber = Int() 
    var pickerString2 = [String]() 
    var selectedQuestionNumber: String! 
    var contacts: NSArray? 
    var dictContacts = Int() 
    var pickerArray: NSArray? 

    @IBOutlet weak var numberOfRow: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(currentTopicIndex) 

     questionNumberPickers.delegate = self 
     questionNumberPickers.dataSource = self 

     self.numberOfRow.text = "0" 
     setCount = Quiz.quizzes[currentTopicIndex].plist.count 

     let min = 1 
     let max = setCount 
     let intArray: [Int] = Array(min...max) 
     print(intArray) 

     let pickerString2 = intArray.map 
     { 
      String($0) 
     } 

     self.questionNumberPickers?.reloadAllComponents() 

     print(pickerString2) 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if(segue.identifier == "questionToQuiz"){ 

      // Get the new view controller using [segue destinationViewController]. 
      let detailScene = segue.destination as! QuizController 


      detailScene.numberOfQuestions = numberOfRow.text as String! 
     } 
    } 

    func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return pickerString2.count 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return pickerString2[row] 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     numberOfRow.text = pickerString2[row] 
    } 
} 
+0

Erstaunlich danke EmirC! Dein Lebensretter! – Kailas198

Antwort

1

Entfernen Sie die "let" von lassen pickerString2 = intArray.map { String ($ 0) }

In viewDidLoad Sie eine zweite Variable Initialisierung genannt pickerString2.

let pickerString2 = intArray.map 
    { 
     String($0) 
    } 

sollte es seine

pickerString2 = intArray.map 
    { 
     String($0) 
    } 

Aber Sie versuchen, die picker mit den anderen pickerString2 Variable zu füllen, die leer ist.

var pickerString2 = [String]()