Swift, как использовать данные, передаваемые обратно из ВК в других функциях? - PullRequest
1 голос
/ 23 апреля 2019

У меня проблемы с доступом и использованием переменной value, которую я получил из поповера

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

Я попытался изменить значение функции протокола, возвращаемое с первоначально (value: String) -> (), до (value: String) -> (String)

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

    date = popupValueSelected(value: ???) // throws an error because it doesn't know about the delegate

Это мой код протокола делегата:

    protocol PopupDelegate {
        func popupValueSelected(value:String)
    }

Вот код, используемый в моем главном контроллере представления для получения данных из всплывающего окна, который все прекрасно работает

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
            let popup = segue.destination as! DatePopupViewController 
            popup.delegate = self
    }

    func popupValueSelected(value: String) {
            date = value // how to access this value from somewhere else??
}

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

Извините, если это не имеет смысла, так как мне трудно объяснить проблему, поэтому я и хочу воспользоваться этой учетной записью, хотя я чувствую, что что-то настолько простое, что мне не хватает.

Я ценю все отзывы, которые я могу получить!

1 Ответ

1 голос
/ 23 апреля 2019

Если я не пропускаю что-то, вы, кажется, находитесь на 90% пути. Вы получили popupValueSelected значение. Если вы сохраните значение в переменной уровня класса, вы сможете использовать его позже. Дайте мне знать, если я не полностью понимаю вашу проблему.

...