2016-11-01 2 views
0

, поэтому я разрабатываю приложение, а также быстро участвую в нем. Я выяснил, как отправлять данные из secondViewController в firstViewController. По сути, я связал кнопку «done» с firstViewController, поэтому, когда я нажимаю «Готово», он открывает новое окно первого viewController и передает данные, которые я передал.Swift: передача данных в предыдущий контроллер без открытия viewController в новом окне

Тем не менее, я ищу способ обновить firstViewController, не открыв другое окно с другим segue.

Лучший способ объяснить это, что мой firstViewController имеет кнопку «добавить», которая открывает второй элемент управления просмотром. Этот viewController имеет два текстовых поля, вы пишете в нем материал (я хочу, чтобы на первом viewController появлялись записи, написанные в этих двух текстовых блоках) &, после чего, когда вы нажимаете кнопку done, secondViewController отклоняется, и вы вернулись на firstViewController.

Это код, который я использую: (в secondViewController)

override func prepare(for segue: NSStoryboardSegue, sender: Any?) { 
var destinationviewcontroller : ViewController = segue.destinationController as! ViewController 
    destinationviewcontroller.LabelText = weblinklabel.stringValue 
    } 

Очевидно labeltext это метка в firstviewcontroller, который показывает, что написано в этих текстовых полях в secondViewController.

Проблема заключается в том, что я использую раскадровку и просто перетаскиваю ее из кнопки «Готово» в firstViewController, она открывает первый ViewController в новом окне с новыми данными/обновленными labeltext. Я хочу, чтобы secondViewController просто уволился, когда я нажимаю «Готово» и обновленный ярлык появляется на первом экране управления, не открывая его в новом окне.

Это немного сложно объяснить, поэтому, если вам нужны детали для уточнения, я буду более чем счастлив дать это!

Заранее благодарен!

+1

Похоже, вы должны использовать [размотать перетекает] (http://stackoverflow.com/questions/12561735/what-are-unwind-segues-for-and -how-do-you-use-them # 12843906) – PeejWeej

ответ

0

Да, вы должны использовать разматывать Segues as stated here.

Во-первых, добавить пустой IBAction метод к вашему firstViewController (обратите внимание, вы должны написать его непосредственно):

@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) { 
} 

После написано, теперь в раскадровку вы можете Control+drag свою кнопку Done к Exit пункта в вашем secondViewController, как это:

enter image description here

Он должен появиться ваш новый метод IBAction, что ж плохо обращаться раскрутку, теперь просто реализовать:

@IBAction func unwindToFirstViewController (sender: UIStoryboardSegue) { 
    if let sourceViewController = sender.source as? SecondViewController { 
     // update whatever values you want 
     // to update in firstViewController from secondViewController 
    } 
} 
+0

У меня нет элемента «Exit» в раскадровке, потому что я думаю, что делаю приложение для какао, а не приложение для iOS. Метод unwindsegue, о котором вы говорите, я считаю для приложений iOS. –

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