TextField文本需要镜像另一个ViewController的TextField输入的文本

时间:2019-08-09 09:22:56

标签: ios swift xcode uitextfield

我当前的设置

ViewController3

此ViewController垂直堆叠有18个TextFields。这是“设置”屏幕,用户可以在其中添加其默认文本(单个单词,注释或句子)。此视图还具有一个save按钮,可以使用UserDefaults保存,效果很好。

要访问此视图(设置屏幕),用户通过show segues点击位于主视图(settings)上的ViewController1按钮。一旦对默认文本进行了所有编辑(通常是一次关闭并一次又一次地重复使用),则他们点击save按钮,然后点击Done按钮以返回到ViewController1

ViewContoller2

此ViewController具有匹配的18个TextField(再次垂直堆叠),但是每个都有一个选择开关。如果开关处于活动状态,则意味着选择了TextField。在垂直堆叠的18个TextFields中,用户可以选择任意给定数量的它们。

然后,将选定的内容填充为从Send Email上的ViewController1按钮发送的电子邮件的邮件正文中的选定文本列表。

ViewController1

这是应用程序的主视图,在该视图中,应用程序将所需的文本输入多个TextFields后将发送电子邮件,并且其中包括TextView,该文本具有从{ {1}}

注意:在ViewController之间的所有过渡都是通过show segues。

  

问题1:

     

什么代码或如何编写代码以使ViewController2中的TextField能够自动填充(复制或镜像)已输入到ViewController3中的TextField中的文本?

     

问题2:

     

如何从ViewController2中获取选定的TextField,以邮件列表的形式显示在电子邮件正文中,但垂直堆叠在它们的单独行上?

1 个答案:

答案 0 :(得分:0)

好吧,让我看看我是否不知所措。

  • VC3是设置视图,您可以在其中“注册”某些时候要使用的文本。
  • VC2是一个视图,您可以选择要使用/发送/任何内容的文本
  • VC1是主屏幕,在其中显示您在上方选择的文本

如果您使用segues,我相信在VC3上注册或更改数据时不会实例化VC2。因此,NotificationCenter不是像@dahiya_boy这样的选项。

如果您将所有数据保存在UserDefaults上,那么当用户打开VC2屏幕(可能在viewDidLoad上时)是否只能加载这些数据并应用于VC2上的每个TextField上

您的第二个问题...问题是什么?

如果问题是在VC2和VC1之间传递数据,则可以使用NotificationCenter或委托。

如果问题在于如何将其显示为堆栈,则可以将其作为数组从VC2传递到VC1,并使用joined(separator:)附加所有内容,并传递\n作为分隔符。 (换行符)