【问题标题】:Wrong order in string array字符串数组中的顺序错误
【发布时间】:2016-07-19 21:50:49
【问题描述】:

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

这是我的代码:

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

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

【问题讨论】:

    标签: arrays swift delegates segue


    【解决方案1】:

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

    所以替换这个

    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 }
    

    【讨论】:

    • 这确实有效。当然,我必须把它们整理出来。非常感谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      相关资源
      最近更新 更多