Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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 将数据从textView传递到另一个ViewController时出错_Ios_Swift_Uiviewcontroller_Uitextfield - Fatal编程技术网

Ios 将数据从textView传递到另一个ViewController时出错

Ios 将数据从textView传递到另一个ViewController时出错,ios,swift,uiviewcontroller,uitextfield,Ios,Swift,Uiviewcontroller,Uitextfield,我试着用 @IBOutlet weak var textField: UITextField! @IBAction func saveTextToVar(sender: UIButton) { var exercises: NSString = textField.text } 要将文本字段中键入的变量练习保存到ViewController,我在其中声明了变量 class ViewController: UIViewController,UIPickerViewDelegate

我试着用

 @IBOutlet weak var textField: UITextField!

@IBAction func saveTextToVar(sender: UIButton) {
    var exercises: NSString = textField.text
}

要将文本字段中键入的变量练习保存到ViewController,我在其中声明了变量

class ViewController: UIViewController,UIPickerViewDelegate {

var exercises = ["a","b","c"]
它应该用作UIpickerView中的组件,但在ViewController2上出现错误。
“String”不能转换为“[String]”

当然可以!您可以保存PickerView数据的标题以永久保存它们,或者如果不需要永久存储它们,可以将其保存到普通数组中,然后动态加载到UIPickerViewDeleteGate的

pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String!
在这里

在我自己的应用程序中,我有一个数据模型,在该模型中,我将给定模块的所有相关数据存储在我的应用程序中。我动态加载PickerView的标题,如下所示:

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return dataModel.levels[row]
}
我还实施

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return dataModel.levels.count
}

确保它在组件中始终具有正确的行数。

因为错误表明您的练习变量被键入为字符串数组,并且您正在将字符串值传递给它。为了实现这一点,您必须将文本字段中的字符串附加到PrepareForsgue方法中的练习数组中

override func prepareForSegue(segue: (UIStoryboardSegue!), sender:     AnyObject!) {
if (segue.identifier == "segueTest") {
    var svc = segue!.destinationViewController as ViewController;

    svc.exercises.append(textField.text)

}
已编辑:由于需要从根视图控制器添加多个练习,所以应将它们全部保存在根视图控制器内的变量中,然后将所有新值添加到视图控制器练习中。因此,您的代码应该看起来像fowlowing

@IBOutlet weak var textField: UITextField!

var exercises: [String] = []

@IBAction func saveTextToVar(sender: UIButton) {
    exercises.append(textField.text)
} 

override func prepareForSegue(segue: (UIStoryboardSegue!), sender:     AnyObject!) {
if (segue.identifier == "segueTest") {
    var svc = segue!.destinationViewController as ViewController;

    svc.exercises = svc.exercises + self.exercises

}}

非常感谢。它现在正在工作。但是你能告诉我如何添加多个新变量吗?我的意思是,每当我添加一些东西并添加一个新的时,旧的信息似乎就消失了。编辑:如果我在测试时在ViewController之间切换,变量也消失了。新变量似乎没有正确保存。谢谢。现在我可以添加多个练习。但我需要把练习存储起来——就像在待办事项列表应用程序中一样。@santaklaus805存储数据和你最初要求的完全不同。一个好的起点可能是这个答案适用的原始问题:是否可以让我的应用程序的用户能够使用不同Viewcontroller中的textfield和save按钮向PickerView添加变量?我已经有了一个包含3个现有变量的Pickerview-比如1,2,3和另一个包含文件的Viewcontroller-但是如何添加4,5。。。使用应用程序并保存此变量时。
@IBOutlet weak var textField: UITextField!

var exercises: [String] = []

@IBAction func saveTextToVar(sender: UIButton) {
    exercises.append(textField.text)
} 

override func prepareForSegue(segue: (UIStoryboardSegue!), sender:     AnyObject!) {
if (segue.identifier == "segueTest") {
    var svc = segue!.destinationViewController as ViewController;

    svc.exercises = svc.exercises + self.exercises

}}