【问题标题】:How to set multiple UILabels from array in Swift?如何在 Swift 中从数组中设置多个 UILabel?
【发布时间】:2015-09-16 14:33:43
【问题描述】:

我想做的是得到今天的工作日。从中我得到剩下的 6 个工作日,我将它们放入一个数组中,然后尝试使用这个数组来更新 7 UILabels。从今天开始的工作日的简短列表。我的UILabels 在引用插座集合中,我已将它们的标签从 0 设置为 6。

我已经尝试了多个不同的版本(最初没有任何数组),并设法在 Playground 上完成这项工作,直到我在数组中有工作日但在实际项目中,当我尝试更新时标签,它构建成功但随后崩溃。

编辑:成功构建后发生崩溃。线程 1 中的错误:断点 1.1。显然停在 super.viewDidLoad() 行。

Edit2:按照建议进行了更改。构建成功,然后以与第一次编辑相同的方式崩溃。

感谢任何帮助。

import UIKit

class ViewController: UIViewController {
    @IBOutlet var label: [UILabel]!

    var rollingDay = NSDate()
    var array: [String]  = []

    func addDays() {
        var calendar = NSCalendar.currentCalendar()
        var formatter = NSDateFormatter()
        var stringRolling = formatter.stringFromDate(rollingDay)

        for var x = 0; x<7; x++ {
            calendar = NSCalendar.currentCalendar()
            formatter = NSDateFormatter()
            formatter.dateFormat = "EEEE"
            stringRolling = formatter.stringFromDate(rollingDay)
            array.append(stringRolling)
            rollingDay = calendar.dateByAddingUnit(.CalendarUnitDay, value: 1, toDate: rollingDay, options: nil)!
        }
    }
func updateLabels() {
    for (index, day) in enumerate(array) {
        let label : UILabel = self.view.viewWithTag(index) as! UILabel
        label.text = day as String
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    addDays()
    updateLabels()

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

【问题讨论】:

  • 您需要使用有关崩溃的详细信息更新您的问题。

标签: arrays swift tags uilabel


【解决方案1】:

既然你已经使用array来保存所有的工作日,现在你只需要枚举数组来设置标签,如下所示:

for (index, day) in enumerate(array) {

    let label : UILabel = self.view.viewWithTag(index) as! UILabel
    label.text = day as String
}

【讨论】:

  • 您能在原始代码中展示您的解决方案吗?我对 Swift 的了解非常有限,我试图将您的解决方案与可变的有趣错误集成在一起。在我的解决方案中,我将工作日附加到数组中,使用 NSArray 这似乎不起作用。提前致谢。
  • 对原始代码进行了更改。构建正常,但在第一次编辑中崩溃。令人费解。
  • 你的数组中有哪些元素?它在什么情况下崩溃以及有什么异常原因?请在此处发布。
  • 数组由 NSDate 提供的工作日组成。现在我设法得到了一个实际的错误报告,它说“无法将'UIView'(0x1996ff510)类型的值转换为'UILabel'(0x199700e10)。”
  • 这是因为self.view的子视图中必须有一个标签为0的UIView(因为0是默认标签值)。这就是为什么self.view.viewWithTag(0) 会崩溃,因为它不是UILabel。您不能在任何工作日使用 0 标签。尝试为所有工作日索引添加一个常数。
猜你喜欢
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多