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
}}