按字母顺序更改数组中的标签文本

时间:2018-03-13 17:43:25

标签: ios arrays swift sorting uilabel

我有一系列标签和一组字母,我想按字母顺序打印标签中的每个字母。

我对字母数组进行了排序,但我不知道如何对标签数组进行排序。

enter image description here

class ViewController: UIViewController {

    @IBOutlet var labels: [UILabel]!

    override func viewDidLoad() {
        super.viewDidLoad()
        wordToLabel()
    }

    let letters = ["B", "E", "C", "D", "A"]

    func wordToLabel() {
        for index in labels.indices {
            let label = labels[index]
            let sortedLetters = letters.sorted { $0 < $1 }
            label.text = sortedLetters[index]
            print(sortedLetters)
        }
    }

}

我可以不使用UITableView吗?

2 个答案:

答案 0 :(得分:1)

如果我们假设您的labels数组的顺序正确,那么您可以这样做:

let letters = ["B", "E", "C", "D", "A"]

func wordToLabel() {
  let sortedLetters = letters.sorted()
  for (index, label) in labels.enumerated() {
    label.text = sortedLetters[index]
}

使用labels.enumerated可以访问索引和项目。然后,您可以使用index浏览sortedLetters

顺便说一下,sortedLetters被遗漏在循环之外,因为你不应该多次排序。

希望有所帮助。

答案 1 :(得分:1)

您一定要确保标签的顺序正确。除此之外你可以这样做:

let letters = ["B", "E", "C", "D", "A"]

func wordToLabel() {
    let sortedLetters = letters.sorted()
    let sortedLabels = labels.sorted { $0.frame.origin.y < $1.frame.origin.y }

    for (index, label) in sortedLabels.enumerated() {
        label.text = sortedLetters[index]
    }
}