尝试使用数组创建随机图像生成器

时间:2020-04-05 03:16:01

标签: geocoding

我是xcode和swiftui的新手,我试图使用在contentview中创建的一些花朵图像数组创建一个随机图像生成器。我希望它看起来像是单击一个按钮,然后弹出随机花。我不在乎这些图像是否重复。提前致谢!这是我到目前为止的内容:

[import SwiftUI

struct ContentView: View {

    var flowers = ["carnation", "daffodil", "iris", "lily", "orchid", "peony", "poppy", "rose", "sunflower", "tulip"]


    var body: some View {
        Text("sunflower")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


]

1 个答案:

答案 0 :(得分:0)

您可以在String Array上使用randomElement,但我的建议是将数组转换为枚举。

struct ContentView: View {
  private enum Flower: String, CaseIterable {
    case carnation
    case daffodil
    case iris
    case lily
    case orchid
    case peony
    case poppy
    case rose
    case sunflower
    case tulip

    static var random: Flower {
      allCases.randomElement()!
    }
  }

  @State private var flower: Flower = .random

  var body: some View {
    Button(
      action: { self.flower = .random }
    ) {
      Image(flower.rawValue).renderingMode(.original)
    }
  }
}
struct ContentView: View {
  private static let flowerNames = [
    "carnation",
    "daffodil",
    "iris",
    "lily",
    "orchid",
    "peony",
    "poppy",
    "rose",
    "sunflower",
    "tulip"
  ]

  private static var randomFlowerName: String {
    flowerNames.randomElement()!
  }

  @State private var flowerName = randomFlowerName

  var body: some View {
    Button(
      action: { self.flowerName = Self.randomFlowerName }
    ) {
      Image(flowerName).renderingMode(.original)
    }
  }
}