如何在轻松的Segue中传递数据(Swift 3)

展开序列(也称为“退出序列”)是一种序列,它允许用户从其当前视图控制器导航回先前的视图控制器。

想象一下:我有两个视图控制器和viewController1分别连接到viewController2。 用户在viewController2中创建或编辑数据,我想将此数据发送回viewController1。 放松的学习可以帮助解决这个问题。

为了说明我是如何使用放松搜索在两个viewController之间传递数据的,我制作了一个列出最喜欢的《狂人》角色的应用。

Segue:MadMenTableViewController-> AddCharacterViewController

第一个视图控制器MadMenTableViewController显示字符的tableView。 MadMenTableViewController导航栏中的“ +”按钮会将用户引导至AddCharacterViewController ,用户可以在其中将喜欢的字符的名称输入到textField中,然后在其导航栏中按下“保存”按钮。

展开Segue:AddCharacterViewController-> MadMenTableViewController

当我从AddCharacterViewController “展开” 序列以将新字符的名称(来自textField的字符串)返回给MadMenTableViewController时 ,我希望能够将此字符名称与展开序列一起传递,以便可以将其添加到数组中并显示在表格中。

故事板设置

在Storyboard中,从MadMenTableViewController中 ,我将导航“ +”(添加)按钮控制拖到AddCharacterViewController视图中,并选择“ Show”(例如Push)作为其segue类型。

AddCharacterViewController设置

在我的AddCharacterViewController中,我有一个称为character的存储属性,它将保存用户(从textField)输入的新字符的名称。 我重写了prepare(for segue 🙂方法,并从textField中解开了文本,并将其值分配给character属性。 正是在这个函数中,当取消缝合时,字符值将被传递回MadMenTableViewController

MadMenTableViewController设置

在我的MadMenTableViewController类中,我编写了一个@IBAction函数unwindFromAddVC(_ sender 🙂 ,该函数将在AddCharacterViewController取消 segue(单击“保存”按钮并退出AddCharacterViewController)时调用

上面,在#21行上,我有unwindFromAddVC函数。 该功能将接收字符名称字符串并将其添加到现有的“狂人”收藏夹数组中。

在#23行上,我检查看是否释放了segue的是否是我想要的AddCharacterViewController

在第24行上,如果确实是我的AddCharacterViewController ,我将解包此senderVC并访问其character(String)属性(请记住,此字符串保留了我们角色的名称)。

在第25行上,此字符属性附加到我们的madMenCharacters数组。

在第27行,我确保刷新tableView,因为我们数组中现在需要显示一个新项。

将“保存”连接到“退出AddCharacterViewController”

回到Storyboard中 ,还有最后一件事要做。

控件将AddCharacterViewController中的“保存”按钮拖动到其退出图标 (最右边的橙色图标)。 放开时,应显示MadMenTableViewController中的@IBAction方法。 选择它,构建并运行您的应用程序。

现在,来自第二个视图控制器的数据将传递到第一个视图控制器! 很简单!

一探究竟:

我在这个项目的仓库可以在这里找到。

资源:

使用Segues-Apple文档