-2

このアプリでは、カードの NSOrderedSet をコア データの「サブジェクト」エンティティに保存して、ユーザーが自分でクイズできるようにします。カードは火口のようにファッショナブルに反転してドラッグしますが、カードの更新方法では問題があります。現在のカードは、ビューでロードしたことを設定すると正常に表示されます (NSOrderedSet の配列プロパティの最初のカード)。ただし、ドラッグして更新すると、すぐに最後のカードに移動します。たとえば、デッキに 5 枚のカードがある場合、最初のカードから開始し、すぐに 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

    }
}
4

1 に答える 1

0

現在、 for ループを呼び出すとupdateCard、コンピューターの速度で計算され、最後のインデックスのみが表示されます。

1 つのオプションを次に示します。

あなたのクラスでは、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

}
于 2016-01-26T22:30:16.043 に答える