Хотите отображать общий процент выполненных операций на главном экране в соответствии с идентификатором карты - PullRequest
0 голосов
/ 08 октября 2019

В моем приложении я перелистываю карточки влево или вправо, и когда все карточки заканчиваются перелистыванием, я перехожу на экран результатов, где отображается общий процент ответа, т. Е. 30% или 40% и т. Д. Я хочу отобразить этот счет. на домашний экран в соответствии с идентификатором соответствующей карты, в зависимости от того, какой был проведен. мой экран оценки ниже:

экран оценки

я хочу отобразить на главном экране, как показано на рисунке ниже: домашний экран

проблема в том, что, когда я проведу пальцем по карточкам других категорий, а затем выведу процентную оценку на домашний экран, ранее добавленная оценка к предыдущей категории исчезнет. Я хочу показать соответствующий счет карты, то есть, скажем, я проводил карты категории продуктов питания, отображал счет, а затем проводил карты овощей, а затем отображал счет. Я хочу, чтобы счет карты двух категорий отображался и так далее. Я думаю, что каждый раз, когда я смахиваю карту, пытаюсь показать счет на домашнем экране, затем его заменяют текущим. Мне нужно показать, какую карту я проведу, на ней должна отображаться соответствующая оценка каждой карты

исходный код для экрана оценки, где я храню счет в пользовательских ошибках, а также идентификатор карты в пользовательских ошибках

self.progressScoreView.value = CGFloat(self.tempProgress)
            UserDefaults.standard.set(self.progressScoreView.value, forKey: "percent_completed")
            UserDefaults.standard.set(self.cardId, forKey: "card_ID")
            UserDefaults.standard.synchronize()

код моего домашнего экрана, где я показываю счет, который написан методом cellforrow, и я проверяю сохраненный идентификатор карты с идентификатором карты, поступающей со стороны API:

if let status = dict.cardStatus, let cardID = dict.cardId, status.count != 0
        {
            let card_completed_percent = UserDefaults.standard.double(forKey: "percent_completed")
            let tmpID = UserDefaults.standard.integer(forKey: "card_ID")
            print(tmpID)

            if status == "Unlock"
            {
                if card_completed_percent > 0 && (cardID == tmpID)
                {
                    let tmpCompleted = forTrailingZero(temp: card_completed_percent)
                    cell.percentCompleted.text = "\(tmpCompleted)%"
                    print(cell.percentCompleted.text!)
                    cell.deckLock.isHidden = true
                }
                else
                {
                    cell.percentCompleted.text = ""
                    print(cell.percentCompleted.text!)
                    cell.deckLock.isHidden = true
                }
            }
            else
            {
                cell.percentCompleted.text = ""
                cell.deckLock.isHidden = false
            }
        }

, пожалуйста, помогите мне с этой проблемой

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Попробуйте сохранить процент и идентификатор карты, например

UserDefaults.standard.set(self.progressScoreView.value, forKey: "percent_completed_for_\(category.id)")
UserDefaults.standard.set(self.cardId, forKey: "card_ID\(card.id)")

, и получить значения из UserDefaults с помощью этих ключей.

0 голосов
/ 08 октября 2019

Я думаю, что ваша проблема здесь:

let card_completed_percent = UserDefaults.standard.double(forKey: "percent_completed")
let tmpID = UserDefaults.standard.integer(forKey: "card_ID")

Таким образом, вы сохраняете только один процент. попробуйте это: UserDefaults.standard.double (forKey: "cent_completed_food ") и UserDefaults.standard.double (forKey: "cent_completed_other_category"), чтобы сохранить одно значение для каждой категории.

...