Как программно получить ввод от UIButton в Swift 4? - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в Swift.Мне удалось создать приложение, которое почти работает, но я не могу сделать последние шаги правильно.Буду признателен за любую помощь!

Я написал код, который отображает определенное пользователем число UILabel с.В этих ярлыках отображается содержимое [String].Под ярлыками указано одинаковое количество UITextField с.Пользователь должен заполнить эти текстовые поля, нажать кнопку и посмотреть, соответствует ли то, что он заполнил, меткам.

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

myButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

Прямо под viewDidLoad есть эта функция, которую я нашел на этом форуме, и я немного ее изменил:

@objc func buttonAction(sender: UIButton!) -> [String] {
    var a = 0
    var userInput: [String] = Array()
    while a < 4 {
        if let myTextField = self.view.viewWithTag(a) as? UITextField {
            let tekstInput = myTextField.text
            userInput.insert(tekstInput!, at:a-1)
        }
        a = a + 1
    }
    return userInput
}

Мои проблемы:

В цикле while в функции должно быть не 4, а максимум, определяемый пользователем.Но если я пытаюсь изменить функцию так, чтобы она ожидала эту переменную в качестве входных данных, я получаю сообщения об ошибках в строке myButton.addTarget.

Как мне прочитать возврат в viewdidload, чтобы добавить туда кодсравнить пользовательский ввод с оригинальным [String]?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы должны рассмотреть источник пользовательского ввода, если хотите ответить на свой вопрос.

Например, если вы хотите добавить дополнительный UITextField для получения вашего пользовательского ввода, тогда всеВы должны извлечь значение из этого текстового поля в вашем методе buttonAction(sender:) и использовать его там.Это примерно соответствует следующему

@objc func buttonAction(_ sender: UIButton) {

    var a = 0
    var userInput: [String] = Array()

    guard let upperLimit = self.userInputTextField.text as? Int else {
        return
    }

    while a < upperLimit {
        if let myTextField = self.view.viewWithTag(a) as? UITextField {
            let tekstInput = myTextField.text
            userInput.insert(tekstInput!, at: a-1)
        }
        a = a + 1
    }

}

Обратите внимание, что self.userInputTextField - это дополнительное текстовое поле, которое вы должны добавить для получения вашего пользовательского ввода.

...