Как добавить массив с помощью ввода UITextField? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть задание сделать калькулятор для расчета среднего количества заданных входов. Мне нужно будет принять и отобразить число, введенное в range между 0 и 100 (кнопка «ДОБАВИТЬ»). И рассчитать и отобразить среднее.

Существует UITextField, где я ввожу цифры, затем нажмите кнопку ДОБАВИТЬ, чтобы отобразить их в label/textview (я не уверен, какой использовать).

Числа должны быть добавлены в массив, чтобы использовать функцию averageOf().

Я пытался отобразить числа, но label заменяет новый номер вместо его добавления. Я очень новичок в Swift и не знаю, как кодировать, чтобы принимать только определенный диапазон чисел.

Мое текстовое поле:

@IBOutlet weak var txtInput: UITextField!

Кнопка ДОБАВИТЬ:

@IBAction func btnAdd(_ sender: UIButton) {
        let testScore = txtInput.text
        scoreDisplay.text = testScore
    }

Вывод / отображение номера должно быть, например, 40, 23.6, 98.2, 74.4 То, что я получаю, это просто замена чисел.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Вы должны добавить, используя += вместо = (который заменяет все значение)

scoreDisplay.text += ", \(testScore)"
scoreDisplay.text = scoreDisplay.trimmingCharacters(in: CharacterSet(charactersIn: " ,"))

Обрезка используется для удаления первого , в вашей строке.

Edit

Поскольку text свойство UILabel равно Optional<String>, вы на самом деле не можете использовать +=.Итак:

scoreDisplay.text = scoreDisplay.text ?? "" + ", \(testScore)"
scoreDisplay.text = scoreDisplay.text?.trimmingCharacters(in: CharacterSet(charactersIn: " ,"))
0 голосов
/ 13 мая 2019

РЕДАКТИРОВАТЬ: Я нашел проблему. Оба параметра ScoreDisplay.text и testScore.text являются необязательными, поэтому вы должны убедиться, что они имеют значение.

@IBAction func btnAdd(_ sender: UIButton) {
   guard let testScore = txtInput.text, let scoreDisplay = scoreDisplay.text else  { return }
   scoreDisplay.text = scoreDisplay + testScore
  } 

Также, если вы хотите добавить «,» в середине каждого числа:

@IBAction func btnAdd(_ sender: UIButton) {
   guard let testScore = txtInput.text, let scoreDisplay = scoreDisplay.text else  { return }
   scoreDisplay.text = "\(scoreDisplay), \(testScore)"
  }

PD: = только заменяет вашу строку на другую, + = добавляет новую строку.

...