Xcode Swift пропускает строку из popover view в основной VC

Я пытаюсь передать данные из строки в моем popOverViewController обратно в мой mainVC как строку. Но я не могу понять, как это сделать, поэтому, пожалуйста, помогите кому-нибудь.

Моя главная функция:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "popoverSegue" { let popoverViewController = segue.destinationViewController popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover popoverViewController.popoverPresentationController!.delegate = self } } 

Мой popOverVC:

Im пытается передать значениеВыбранный back to mainVC

 var pickerString = NSArray() as AnyObject as! [String] var valueSelected = String() @IBOutlet weak var picker: UIPickerView! @IBAction func pickButton(sender: AnyObject?) { // need to send valueSelected back to previous navigated view print("Value: ", valueSelected) dismissViewControllerAnimated(true, completion: nil) } 

необходимо отправить valueSelected обратно в предыдущее навигационное представление.

Для этого вы можете быстро использовать closures . Вот как это сделать:

FirstViewController.swift

 class FirstViewController: UIViewController { override func viewDidLoad() { } @IBAction func onButtonTap(_ sender: UIButton) { self.performSegue(withIdentifier: "popoverSegue", sender: self) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "popoverSegue" { let popoverViewController = segue.destination as!PopOverViewController popoverViewController.modalPresentationStyle = UIModalPresentationStyle.popover popoverViewController.popoverPresentationController!.delegate = self popoverViewController.completionHandler = {(valueSelected : String?) in if let valueSelected = valueSelected { print(valueSelected) //Write yout code here } } } } } 

PopOverViewController.swift

 class PopOverViewController: UIViewController { var completionHandler : ((String?)->(Void))? var pickerString = NSArray() as AnyObject as! [String] var valueSelected = String() @IBAction func pickButton(_ sender: UIButton) { print("Value: ", valueSelected) self.dismiss(animated: true, completion: {[weak self] in if let handler = self?.completionHandler { handler(self?.valueSelected) } }) } } 

Если вы хотите использовать делегат

добавить протокол

 protocol SelectDelegate: NSObjectProtocol { func select(_ string: String) } 

добавить слабый тип Делегировать в popOverVC и использовать его до отклоненияПросмотр

 var pickerString = NSArray() as AnyObject as! [String] var valueSelected = String() weak var delegate: SelectDelegate? @IBOutlet weak var picker: UIPickerView! @IBAction func pickButton(sender: AnyObject?) { print("Value: ", valueSelected) //added Line delegate?.select(valueSelected) dismissViewControllerAnimated(true, completion: nil) } 

Внедрить SelectDelegate в MainVC

 class MainVC { . . . func select(string: String) { //doSometing popupVC's string } } 

назначить делегата popOverVC mainVC

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "popoverSegue" { let popoverViewController = segue.destinationViewController popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover popoverViewController.popoverPresentationController!.delegate = self // added Line popoverViewController.delegate = self } } 
  • AFNetworking 2.0 устанавливает SSL-соединение
  • Внутреннее распределение
  • Добавление наклейки в существующее приложение для iOS
  • EXC_BAD_ACCESS, когда popViewController
  • Обновить раздел статического UITableView
  • Статический анализатор Xcode 5 висит
  • Предупреждения CocoaPods с флагами компоновщика xcconfig
  • Могут ли опции доступности переключаться программно?
  • XCode 7.2.1 - cdtool не может компилироваться, происходит нерегулярно
  • Ошибка архитектуры архитектуры IOS
  • Граница на CALayer отображается некорректно
  • Interesting Posts

    iOS openURL прослушиватель событий?

    Регулировка высоты / ширины UIWebview в Swift

    Как использовать одну и ту же строку кода снова и снова в нескольких контроллерах просмотра в ios

    Может ли быть только один сертификат распространения для разработчика приложений?

    Сбой на sizeWithFont и его замена на iOS 7

    Размер предварительного просмотра UIImagePickerController не совпадает с размером в реальном времени

    статическая библиотека имеет большой размер

    Разрешить нескольким пользователям отправлять приложения приложений iOS / Mac App Store без изменения профилей

    Использование нескольких UIView вместо нескольких UIViewControllers

    Должен ли я запрашивать разрешение на запись звука в iOS 8?

    Сортировка 2D NSMutableArray

    Встряхните … iOS

    Автоматическая автозагрузка UITextField с полями программно

    Получите размер прямоугольника в UIView с помощью cornerRadius

    collectionView didSelectItemAt indexPath не называется swift

    Давайте будем гением компьютера.