2015-04-24 5 views
0

Я новичок в Swift и пытаюсь добавить string в массив в предыдущем viewController. В моем основном контроллере зрения у меня есть этот метод, чтобы объявить viewControllerКак подключить 2 контроллера вида? - Swift

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     var newSoundViewController = segue.destinationViewController as! NewSoundViewController 
     newSoundViewController.previousViewController = self 
} 

В NewSoundViewController, у меня есть метод, который добавляет string в массив предыдущего viewController. Вот этот код:

@IBAction func saveTapped(sender: AnyObject) { 
    var sound = Sound() 
    sound.name = soundTextField.text 
    self.previousViewController.sounds.append(sound) 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 
+0

Вы смогли это решить? – Miknash

ответ

2

Вы можете сделать несколько вещей, о том, что:

-Unwind Segue (What are Unwind segues for and how do you use them?)

-Delegate: Вы можете создать @protocol и определить метод там, объявить делегат (второй класс), выполните протокол в своем первом классе, а затем просто вызовите self.delegate.thatMethod.

Ради Комплектность, вы можете использовать еще несколько вещей:

-Singleton класс

-CORE данных.

Unwind segue является лучшим решением для вашего решения, так как вам нужна связь между двумя контроллерами, которые находятся рядом друг с другом. Они не должны быть рядом друг с другом, но находиться в одном навигационном стеке (благодаря @ABakerSmith)

Делегат хорош, когда вам нужно общаться между удаленными контроллерами.

Singleton обычно используется для конфигурации, а данные Core - это что-то вроде базы данных. Эти последние два не подходят для вашего дела, поэтому я бы использовал разматывать segue.

+0

Хороший ответ, просто подумал, что я должен упомянуть, что для использования развязки seuue контроллеры представлений не должны быть «рядом друг с другом» - вы можете переходить к любому контроллеру представления, если он находится в иерархии представленных контроллеров представлений , – ABakerSmith

+0

Да, моя вина. То, что я имел в виду, - это то, что в навигационной иерархии должно использоваться разматывание. Спасибо за внимание – Miknash

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