Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将用户文本字段输入附加到其他视图控制器的数组中_Ios_Arrays_Swift - Fatal编程技术网

Ios 将用户文本字段输入附加到其他视图控制器的数组中

Ios 将用户文本字段输入附加到其他视图控制器的数组中,ios,arrays,swift,Ios,Arrays,Swift,所以我一直在寻找一个我能理解并应用于我的项目的解决方案,但运气不佳 我有一个带有UItextfield的弹出窗口(viewcontroller1)。在此字段中,用户应输入附加到另一个视图控制器(viewcontroller2)数组中的文本 我用prepare(for segue)尝试了一些东西,但这也会将用户转移回viewcontroller1,对吗 那么,我如何将此UItextField数据附加并保存到viewcontroller2中的数组中,而不在用户点击enter键时自动移动用户?您可以使

所以我一直在寻找一个我能理解并应用于我的项目的解决方案,但运气不佳

我有一个带有
UItextfield
的弹出窗口(viewcontroller1)。在此字段中,用户应输入附加到另一个视图控制器(viewcontroller2)数组中的文本 我用
prepare(for segue)
尝试了一些东西,但这也会将用户转移回viewcontroller1,对吗


那么,我如何将此UItextField数据附加并保存到viewcontroller2中的数组中,而不在用户点击enter键时自动移动用户?

您可以使用
委托
通知
来实现这一点


当用户完成编辑时,您需要调用委托函数(可能是一个“保存”按钮将为您提供用户已完成输入的回调)。有关委派的更多信息,请参阅

您可以利用
委托
通知
来实现此目的


当用户完成编辑时,您需要调用委托函数(可能是一个“保存”按钮将为您提供用户已完成输入的回调)。有关委派的更多信息,请参阅

将数组变量设置为“静态”

static var arrayElements = [String]()
您可以在项目中的任何位置使用

viewcontroller2.arrayElements

将数组变量设置为“静态”

static var arrayElements = [String]()
您可以在项目中的任何位置使用

viewcontroller2.arrayElements

除非您需要立即在
ViewController1
中使用在
UITextField
中输入的数据,否则您可以使用
prepare(for segue)
。此函数实际上并不启动
segue
,但当segue即将发生时,系统会自动调用此函数,方法是:在
InterfaceBuilder
中选择已连接到的
segue
的UI元素,然后到达调用
self.perform(segue)的一段代码

除非您需要立即在
ViewController1
中使用输入到
UITextField
的数据,否则您可以使用
prepare(for segue)
。此函数实际上并不启动
segue
,但当segue即将发生时,系统会自动调用此函数,方法是:在
InterfaceBuilder
中选择已连接到的
segue
的UI元素,然后到达调用
self.perform(segue)的一段代码

从文本字段输入文本后,您希望用户被带到
ViewController2
还是留在
ViewController1

如果您希望在输入此数据后将用户带到第二视图控制器,则可以将此字符串按顺序传递到第二视图控制器。 为此,在
ViewController2.h
文件中,将新属性作为字符串添加到第二视图控制器。 当您使用Identifier执行操作时,请将您作为发件人输入的字符串传递给它,并在“准备”序列中,将
viewController2
设置为您的
segue
destinationViewController
,然后您可以将
viewController2.string
设置为发件人

如果您只是希望附加它,我建议创建一个共享实例或单例对象的新类。此实例或对象将具有一个数组,该数组将维护其值,而不管您输入了哪个视图控制器。
您可以查看此问题的首选答案,可能会有所帮助:

一旦您从文本字段输入文本,您希望用户被带到
ViewController2
还是留在
ViewController1

如果您希望在输入此数据后将用户带到第二视图控制器,则可以将此字符串按顺序传递到第二视图控制器。 为此,在
ViewController2.h
文件中,将新属性作为字符串添加到第二视图控制器。 当您使用Identifier执行操作时,请将您作为发件人输入的字符串传递给它,并在“准备”序列中,将
viewController2
设置为您的
segue
destinationViewController
,然后您可以将
viewController2.string
设置为发件人

如果您只是希望附加它,我建议创建一个共享实例或单例对象的新类。此实例或对象将具有一个数组,该数组将维护其值,而不管您输入了哪个视图控制器。
您可以查看此问题的首选答案,可能会有所帮助:

这可以使用
通知中心来完成。在ViewController2中添加观察者(Swift 3版本):

在ViewController1中:

当用户单击“添加到弹出窗口”时:

@IBAction func yourButtonAction(sender : UIButton )  {

   let inputText = inputTextField.text;

   notificationCenter.post(name: "TextFieldInputChangedNotification", object: inputText)
}
不要忘记删除ViewController 2中的观察者:

deinit {
        NotificationCenter.default.removeObserver(self)
    }

这可以使用
通知中心
完成。在ViewController2中添加观察者(Swift 3版本):

在ViewController1中:

当用户单击“添加到弹出窗口”时:

@IBAction func yourButtonAction(sender : UIButton )  {

   let inputText = inputTextField.text;

   notificationCenter.post(name: "TextFieldInputChangedNotification", object: inputText)
}
不要忘记删除ViewController 2中的观察者:

deinit {
        NotificationCenter.default.removeObserver(self)
    }

我确信这是正确的,但我正试图用swift来实现这一点,如果我没有弄错的话,这就是目标C?无论如何谢谢你!这里有一个swift 3版本:)谢谢你把这个翻译成swift,好像我在使用swift 4和通知中心的某个地方,代码被擦掉了,不起作用。但无论如何,谢谢你!:)我确信这是正确的,但我正试图用swift来实现这一点,如果我没有弄错的话,这就是目标C?无论如何谢谢你!这里有一个swift 3版本:)谢谢你把这个翻译成swift,好像我在使用swift 4和通知中心的某个地方,代码被擦掉了,不起作用。但无论如何,谢谢你!:)