【问题标题】:Iterate through different view with array, Swift用数组迭代不同的视图,Swift
【发布时间】:2020-10-24 03:28:07
【问题描述】:

我有 4 个不同的进度视图

@IBOutlet weak var firstProgressBar: UIProgressView!
@IBOutlet weak var secondProgressBar: UIProgressView!
@IBOutlet weak var thirdProgressBar: UIProgressView!
@IBOutlet weak var fourthProgressBar: UIProgressView!

我有一个包含 4 个值的数组

[30,20,24,25]

由于这个数组从 API 调用中改变(我需要检查我是否真的有这个值),最好和更安全的方法是:

  • 将此数组从大到小排序
  • 遍历此数组并将我的每个 progressView 值设置为相应的数组值

这是我当前的代码:

func setupProgressBar(item: CustomObject) {
   let array = item.array // [x,y,z,w] array 

   self.progressBar.setProgress( ?? , animated: false)
}

我有一个值的动画,但这不是我的问题的重点,我只需要设置值

【问题讨论】:

  • 哪个进度条应该得到哪个数组值?另外,您所说的“最佳方式”是什么意思?你能定义一下吗?
  • 第一个进度条 => 第一个数组值;第二个进度条 => 第二个数组值等等
  • “最佳方式”是指不逐一设置,而是以安全的方式进行(例如,没有崩溃,因为我没有价值)

标签: ios arrays swift for-loop view


【解决方案1】:

更好的方法是将情节提要中的所有UIProgressBar 连接到@IBOutlet 集合。

@IBOutlet weak var progressBars: [UIProgressView]!

然后遍历数组设置progressBars的值。

func setupProgressBar(item: CustomObject) {
    let array = item.array // [x,y,z,w] array
    for (progressBar, value) in zip(progressBars, array) {
        progressBar.setProgress(value, animated: false)
    }
}

【讨论】:

  • 这很有趣,我没想到这个!你能为我的例子添加一些特定的代码吗?假设我必须将这 4 个数组值添加到这个 ProgressBar 集合中
  • 我已经添加了修改后的setupProgressBar方法作为例子。
  • @Frankenstein 问题:如果progressBars 和item.array 的计数不相等会怎样?会崩溃吗?
  • 这很好,如果@Frankenstein 不能帮助我们,我可以试试这个!顺便说一句,非常感谢,我学到了 2 个新东西!
  • @MubashirAli 在那种情况下它不会崩溃。更安全!
【解决方案2】:
func setupProgressBar(item: CustomObject) {
    let valueArray = item.array.sorted  // [x,y,z,w] array
    let progressBars = [firstProgressBar, second….., fourthProgressBar]
    for item in valueArray.enumerated() {
        progressBars[item.index].setProgress(item.value)
    }
}

确保进度条和值相等。否则代码会崩溃。

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多