2015-03-18 3 views
0

У меня есть UISegmentedControl с 4 индексами, содержащими ответы на викторину, которые собраны из массива строк. Моя цель - заполнить все 4 индекса неправильными ответами, а затем случайным образом заменить один из этих индексов правильным ответом. Когда я запускаю симулятор, приложение появляется в бесконечном цикле, и представление никогда не загружается. Когда я прокомментирую весь второй цикл for (loop, который должен заполнять индексы с неправильными догадками), загружаются представления и сегментированный элемент управления, только с правильным ответом, отображаемым в одном сегменте. Почему вводится бесконечный цикл (если это так) и как я могу изменить этот код для отображения сегментированных элементов управления по желанию?Как заполнить индексы UISegmentedControl со значениями String Array в Swift

func nextQuestion() 
    { 
     questionNumberLabel.text = String(format: "Question %1$d of %2$d", 
      (correctGuesses + 1), numberOfQuestions) 
     answerLabel.text = "" 
     correctAnswer = allAnimals.removeAtIndex(0) 
     animalImageView.image = UIImage(named: correctAnswer) // next animal 

     // re-enable UISegmentedControls and delete prior segments 
     for segmentedControl in segmentedControls 
     { 
      segmentedControl.enabled = true 
      segmentedControl.removeAllSegments() 
     } 

     // place guesses on displayed UISegmentedControls 
     allAnimals.shuffle() // shuffle array 
     var i = 0   
     for segmentedControl in segmentedControls 
     { 
      if !segmentedControl.hidden 
      { 
       var segmentIndex = 0 

       while segmentIndex < 4 
       { 
        if i < allAnimals.count && correctAnswer != allAnimals[i] 
        { 
         segmentedControl.insertSegmentWithTitle(
          getStringFromFile(allAnimals[i]), 
          atIndex: segmentIndex, animated: false) 
         ++segmentIndex 
        } 
        ++i 
       } 
      } 
     } 

     // pick random segment and replace with correct answer   
     let randomIndexInRow = Int(arc4random_uniform(UInt32(4))) 
     segmentedControls[0].removeSegmentAtIndex(
      randomIndexInRow, animated: false) 
     segmentedControls[0].insertSegmentWithTitle(
      getStringFromFile(correctAnswer), 
      atIndex: randomIndexInRow, animated: false) 
    } 

ответ

0

Решение:

selectedSegmentIndex = 2 
Смежные вопросы