Tag: Unwind Segues

如何在轻松的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方法。 选择它,构建并运行您的应用程序。 现在,来自第二个视图控制器的数据将传递到第一个视图控制器! 很简单! 一探究竟: 我在这个项目的仓库可以在这里找到。 […]