2015-04-24 25 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赛格瑞(What are Unwind segues for and how do you use them?

-Delegate:您可以创建@protocol并定义方法有,声明委托(第二类),在第一堂课中面对协议,然后简单地致电self.delegate.thatMethod

对于completness起见,你可以使用一些事情:

-Singleton类

-Core数据。

因为您需要两个彼此相邻的控制器之间的通信,所以放开segue是最适合您的解决方案。他们不需要彼此相邻,但要处于相同的导航堆栈中(感谢@ABakerSmith)

当您需要远程控制器之间进行通信时,委派很好。

Singleton通常用于配置,Core数据类似于数据库。最后两个不适合你的情况,所以我会用unwind segue。

+0

好的答案,只是想我应该提到,使用展开的segue,视图控制器不必是'彼此相邻的' - 只要它在所呈现的视图控制器的层次结构中,您可以继续回到任何视图控制器。 – ABakerSmith

+0

是的,我的错。我的意思是应该在导航层次结构中使用unwind。谢谢指出 – Miknash

相关问题