2016-07-19 15 views
0

このコードでは、textfieldのエントリを渡し、別のView Controllerの文字列配列に追加します。問題は、順序が正しくないことです。文字列配列の順序が正しくありません

これは私のコードです:

//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"]

それがあるべき...

これは私が選んだランダムな文字ですが、本当に何でもかまいません。しかし、その順序は重要です。誰かが私のコードをチェックして、どこが間違っていたのか見てもらえますか?前もって感謝します。

答えて

3

は、あなたはまた、代わりにフィールドのフィールドへのタグから行くので、この

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

これは実際に働いた。私はもちろん、それらを整理しなければならなかった。どうもありがとうございます。 – art3mis

1

でこれ

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

を置き換えるあなたは

を取得している UITextField(s)をソートする必要がありますタグ:

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

これは本当に良い、より簡単です。 – art3mis

関連する問題