Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Arrays 字符串数组中的顺序错误_Arrays_Swift_Delegates_Segue - Fatal编程技术网

Arrays 字符串数组中的顺序错误

Arrays 字符串数组中的顺序错误,arrays,swift,delegates,segue,Arrays,Swift,Delegates,Segue,我有一段代码,它从textfield传递条目,并将它们添加到另一个视图控制器中的字符串数组中。问题是,顺序不对 这是我的代码: //Textfields @IBOutlet weak var text1: UITextField! @IBOutlet weak var text2: UITextField! @IBOutlet weak var text3: UITextField! @IBOutlet weak var text4: UITextField! @IBOutlet w

我有一段代码,它从textfield传递条目,并将它们添加到另一个视图控制器中的字符串数组中。问题是,顺序不对

这是我的代码:

 //Textfields
 @IBOutlet weak var text1: UITextField!
 @IBOutlet weak var text2: UITextField!
 @IBOutlet weak var text3: UITextField!
 @IBOutlet weak var text4: UITextField!
 @IBOutlet weak var text5: UITextField!
 @IBOutlet weak var text6: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //Delegates each textfield
    text1.delegate = self
    text2.delegate = self
    text3.delegate = self
    text4.delegate = self
    text5.delegate = self
    text6.delegate = self

    //Tags each textfield
    text1.tag = 1
    text2.tag = 2
    text3.tag = 3
    text4.tag = 4
    text5.tag = 5
    text6.tag = 6

}


func textFieldShouldReturn(textField: UITextField) -> Bool {

    let nextTag: NSInteger = textField.tag + 1;

    if let nextResponder: UIResponder! = textField.superview!.viewWithTag(nextTag){
        nextResponder.becomeFirstResponder()

    }

    else {

        textField.resignFirstResponder()

    }

    return false

}

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let destination = segue.destinationViewController as! secondView

    if segue.identifier == segueID {

        //Adds the textfield entries to the string array on the second view controller
        destination.stringArray = view.subviews.flatMap { ($0 as? UITextField)?.text }

        destination.delegate = self

    }

}
但我不知道我的代码出了什么问题,为什么它会向我的数组发送错误的顺序。我的数组如下所示:

[“q”、“w”、“e”、“t”、“y”、“r”]

什么时候应该

[“q”、“w”、“e”、“r”、“t”、“y”]


这只是我随机选择的字母,条目可以是任何东西。但顺序很重要。谁能检查一下我的代码,看看我哪里出错了?先谢谢你

您需要对正在检索的
UITextField
进行排序

所以换掉这个

destination.stringArray = view.subviews.flatMap { ($0 as? UITextField)?.text }
用这个

destination.stringArray = view
    .subviews
    .flatMap { $0 as? UITextField }
    .sort { $0.0.tag < $0.1.tag }
    .flatMap { $0.text }
destination.stringArray=view
.子视图
.flatMap{$0 as?UITextField}
.sort{$0.0.tag<$0.1.tag}
.flatMap{$0.text}

您需要对正在检索的
UITextField
进行排序

所以换掉这个

destination.stringArray = view.subviews.flatMap { ($0 as? UITextField)?.text }
用这个

destination.stringArray = view
    .subviews
    .flatMap { $0 as? UITextField }
    .sort { $0.0.tag < $0.1.tag }
    .flatMap { $0.text }
destination.stringArray=view
.子视图
.flatMap{$0 as?UITextField}
.sort{$0.0.tag<$0.1.tag}
.flatMap{$0.text}

或者,从标记转到字段,而不是从字段转到标记:

destination.stringArray = (1...6).flatMap({ (view.viewWithTag($0) as? UITextField).text})

或者,从标记转到字段,而不是从字段转到标记:

destination.stringArray = (1...6).flatMap({ (view.viewWithTag($0) as? UITextField).text})

这确实奏效了。当然,我得把它们整理出来。非常感谢。这确实奏效了。当然,我得把它们整理出来。非常感谢你。