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

Error while passing Data from a textView to another ViewController

我尝试使用

 @IBOutlet weak var textField: UITextField!

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

...

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

        svc.exercises = textField.text

    }

将在 textField 中键入的变量 "exercises" 保存到 ViewController,我在其中声明了变量

class ViewController: UIViewController,UIPickerViewDelegate {

var exercises = ["a","b","c"]

(它应该用作UIpickerView中的组件)但是在ViewController2 上出现错误提示。 'String' 不能转换为“[String]”

当然可以!您可以将 PickerView 的标题保存在某处(CoreData 将它们永久保存或普通数组,如果您不需要它们永久存储),然后将它们动态加载到 UIPickerViewDelegate 的

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

Documentation 这里

在我自己的应用程序中,我有一个 dataModel,我在其中存储了我应用程序中给定模块的所有相关数据。我像这样动态加载我的 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
}

确保组件中的行数始终正确。

正如错误所说,您的练习 var 被键入为字符串数组,并且您正在将字符串值传递给它。为了完成这项工作,您必须在 prepareForSegue 方法

中将文本字段中的字符串附加到练习数组
override func prepareForSegue(segue: (UIStoryboardSegue!), sender:     AnyObject!) {
if (segue.identifier == "segueTest") {
    var svc = segue!.destinationViewController as ViewController;

    svc.exercises.append(textField.text)

}

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

@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

}}