Я пытаюсь передать данные из всплывающего VC в родительский VC, используя повторно используемую функцию, чтобы представить всплывающее окно и получить результат. Я пытался использовать метод закрытия с переменной функции во всплывающем окне, я получаю сообщение об ошибке «UIViewController не имеет члена« onSave »(переменная функции). Любая помощь будет оценена. Thx
Я использовал делегаты и сегменты, но хотел бы избежать, чтобы во всплывающем окне была возможность отображать одну функцию и собирать варианты для многих экземпляров.
// Parent VC
class a2ExpenseAddViewController: UIViewController {
@IBAction func selectEtype(_ sender: Any) {
popTitle = "Expense Types"//global var
popMessage = "Select type below or add new" // global var
menuPopup(choices: eTypes){ result in guard let result = else{
return
}
self.eType.setTitle(result, for: .normal)
print("popChoice=",result)
}
}
extension UIViewController {
func menuPopup (choices: [String], completion: @escaping (_ choice: String?) -> ()) {
let main = UIStoryboard(name: "Main", bundle: nil)
let goto = main.instantiateViewController(withIdentifier: "popup")
popChoices = choices
// Error below here - UIViewController has no member 'onSave'
goto.onSave = { (data: String) -> () in
choice = data
}
self.present(goto, animated: true, completion: nil)
}
//Popup VC
PopupViewController: UIViewController,.. // storyboard id is 'popup'
var onSave: ((_ data: String) -> ())?
@IBAction func add(_ sender: Any) {
popChoice = choice.text!
onSave?(popChoice)
dismiss(animated: true) }
Я ожидаю присвоить результат через onSave (данные) заголовку кнопки.
Я получаю сообщение об ошибке "UIViewController не имеет члена" onSave "(переменная функции).