Циклический массив в iOS
В этом приложении я сохраняю набор карт NSOrderedSet в объекте "Subject" в основных данных, чтобы пользователи могли сами проверять. Карточка переворачивается и тянется, как мода, но в методе обновления карты у меня возникают некоторые проблемы. Текущая карта отображается нормально, так как я установил, что загружаемое представление (первая карта свойства массива NSOrderedSet). Однако, когда я перетаскиваю и обновляю, он сразу переходит к последней карте, например, если у меня в колоде 5 карт, он начинается с первой, а затем сразу переходит к пятой. Как лучше всего обновить этот метод, чтобы он проходил по желанию?
Я полагаю, мне следует передать ему свойство индекса, например, метод tableViewDelegate, но если кто-то уже делал что-то подобное раньше и имеет лучший способ, который очень приветствуется.
Спасибо за помощь, как всегда.
func updateCard() {
//cycle through questions here
for var i = 0; i < (self.subject.cards?.count)!; i++ {
self.currentCard = self.subject.cards?.array[i] as? Card
self.draggableView.questionLabel.text = self.currentCard?.question
self.draggableView.answerLabel.text = self.currentCard?.answer
}
}
1 ответ
В настоящее время, когда вы звоните updateCard
цикл for вычисляет на скорости компьютера, и вы можете увидеть только последний индекс.
Вот один из вариантов:
В вашем классе установите хранимую переменную selectedCardIndex в качестве детали реализации, а затем просто увеличьте и обновите представление в updateCard
,
var selectedCardIndex = 0
func updateCard() {
self.selectedCardIndex += 1
self.currentCard = self.subject.cards?.array[self.selectedCardIndex] as? Card
self.draggableView.questionLabel.text = self.currentCard?.question
self.draggableView.answerLabel.text = self.currentCard?.answer
}