2016-12-09 2 views
0

Я новичок в программировании и не могу узнать, как я могу получить данные переменных из функции, которую я создал в swift. Я попытался вернуть переменную, но я получил ошибку в компиляторе.Как использовать объявления переменных внутри функции вне функции в Swift?

class ViewController: UIViewController { 


    @IBOutlet var textField: UITextField! 

    var userName = String() 

    @IBAction func returnPressed(_ sender: Any) { 

     userName = textField.text! //user input will = userName 
     print("return pressed inside textfield") 
     print("User name set to \(userName)") 

    self.view.endEditing(true) //hides keyboard 
     return (userName) 
    } 

Функция активируется при нажатии кнопки возврата. Затем переменная userName будет равна входным данным пользователя в текстовом поле.

Проблема в том, что вне этой функции я больше не могу вызывать переменную userName и получать введенное ранее значение ввода пользователя. И я не могу заставить «вернуться» работать, как я читал.

+1

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

+0

Кроме того, ваша функция returnPressed не имеет никакого возвращаемого типа, очевидно, что компилятор будет кричать на вас, когда вы попытаетесь вернуть что-либо. –

+0

Если вы новичок в программировании, вы можете прочитать [здесь] (http: /stackoverflow.com/documentation/swift/topics) –

ответ

0

Прежде всего userName - это внутренняя переменная для вашего класса ViewController и доступна для каждой функции. Вы должны получить доступ к переменной в пределах некоторой функции, например viewDidLoad, viewWillAppear или любой из ваших пользовательских функций в вашем классе.

сделать любую функцию и получить доступ к переменному

func test() { 
    //access here userName 
} 

Всем лицам, в вашем коде (с некоторыми конкретными исключениями) имеет уровень доступа по умолчанию внутреннего, если вы не указали сам явный уровень доступа. В результате во многих случаях вам не нужно указывать явный уровень доступа в вашем коде.

Подробнее о Access Controls.

Также вы возвращаете что-то из IBAction кнопки, у которой нет никакого типа возврата. Здесь вы получите ошибку компилятора.

Обычно возврат текстовых полей обрабатывается UITextFieldDelegate. См. here.

метод делегата в Swift 3 является

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    return true 
} 
0

Оператор возврата функции ничего не делает, потому что вы не декларируете функцию как возвращающую что-либо.

func returnPressed(_ sender : Any) -> String 

Это была бы функция, которая возвращает строку.

В этом случае вам не нужен оператор return, потому что вы не произвольно записываете результат функции, вызывая функцию вручную.

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

Смежные вопросы