Как отобразить следующий вопрос в метке из массива вопросов - PullRequest
0 голосов
/ 04 февраля 2019

Снимок экрана текущего кода в симуляторе, после нажатия следующей кнопки ничего не меняется, и вопрос, представленный в метке, остается прежним

Я создаю приложение для опроса и хочу отобразитьсписок вопросов через ярлык.Тем не менее, моя текущая функциональность кода представляет тот же вопрос, и мне нужно перейти к следующему вопросу, как только будет нажата кнопка.После того, как кнопка нажата id, как метка, чтобы представить следующий вопрос в массиве, а также переместить ранее заданный вопрос в конец массива.Вот мой текущий код Swift для функции, которая вызывается при нажатии кнопки, на данный момент он представляет тот же вопрос при нажатии кнопки:

         func nextQuestion() {
    var questions = [choice1, choice2, choice3]
    var y = 0

    questionLbl.text = questions[y].question
    questions.remove(at: y)
    y += 1



    var button = UIButton()
    var tags = [0,1,2,3]

    for quest in questions {

    }

    for idx in tags {
        button = choiceButtons[idx]
        if idx < options.count {
            print("True! Index = \(idx) and options count = \(options.count)")
            button.setTitle(options[idx], for: .normal)

        }
        else {
            print("False! Index = \(idx) and options count = \(options.count)")

        }
    }

    print(questions)


}

Вот моя объектная модель, которая содержит объекты, которыеиспользуются для набора вопросов:

      import Foundation

   var choice1 = User.Choice(question: "How old are you?", opt1: "12", opt2: "11", opt3: "10", opt4: "23")
   var choice2 = User.Choice(question: "What color are you?", opt1: "Black", opt2: "White", opt3: "Purple", opt4: "Brown")
   var choice3 = User.Choice(question: "What day is it?", opt1: "Monday", opt2: "Tuesday", opt3: "Friday", opt4: "Sunday")



   var users = [User]()

   struct User {
var fields: Field
var choices = [Choice]()

struct Field {
    var firstname: String
    var lastname: String
    var email: String

    init(first: String, last: String, email: String) {
        self.firstname = first
        self.lastname = last
        self.email = email
    }
}

struct Choice {
    var question: String
    var opt1: String
    var opt2: String
    var opt3: String
    var opt4: String

    init(question:String, opt1: String, opt2: String, opt3: String, opt4: String) {
        self.question = question
        self.opt1 = opt1
        self.opt2 = opt2
        self.opt3 = opt3
        self.opt4 = opt4
    }
}

}

1 Ответ

0 голосов
/ 04 февраля 2019

Вы устанавливаете y в 0 в своем методе nextQuestion, который каждый раз сбрасывает счет:

var y = 0

questionLbl.text = questions[y].question
questions.remove(at: y)
y += 1

Таким образом, вы всегда получаете первый вопрос в массиве вопросов.Кроме того, я не знаю, почему вы удаляете первый элемент из массива вопросов каждый раз, так как вы также воссоздаете массив каждый раз, когда вызывается nextQuestion.

...