Добрый вечер, дорогие земляки! Пример можете подсказать как в моем случает сделать action sheet по возрастанию и убываю рейтинг.Буду очень благодарен!Вот мой код:
import SwiftUI
struct CarViewModel: Codable, Hashable {
var name: String
var image: String
var ratings: Int
}
var carRatingMin = [CarViewModel]()
var contents: [Int] = {
var contents = [Int]()
for value in 0..<15 {
contents.append(value)
}
return contents
}()
struct CarView: View {
func jsonCar() -> [CarViewModel]{
let url = Bundle.main.url(forResource: "SampleDesserts", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
let cars = try? decoder.decode([CarViewModel].self, from: data)
return cars!
}
var body: some View {
NavigationView {
List {
ForEach(jsonCar(), id: \.self)
{ item in
HStack {
CarImage(item.image)
VStack(alignment: .leading, spacing: 0) {
Text(item.name).padding(5)
HStack {
Text("Rating: ").padding(5)
ForEach(0..<item.ratings) { _ in
Image(systemName: "star.fill")
.foregroundColor(Color.yellow)
}
ForEach(item.ratings..<5) { _ in
Image(systemName: "star") .foregroundColor(Color.gray.opacity(0.5))
}
}
}
}
}
}.navigationBarTitle("Cars")
.navigationBarItems(trailing: Button(action: {
}, label: {
Image(systemName: "star.fill").foregroundColor(.black)
}).contextMenu(
ContextMenu(menuItems: {
Button("по убываю", action: {
carRatingMin.reverse()
})
Button("по возрастанию", action: {})
})
)
)
}
}
}
func CarImage(_ image: String) -> some View {
return Image(image)
.resizable()
.clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 2)) .padding(2) .overlay(Circle().stroke(Color.black.opacity(0.2))) .shadow(radius: 3)
.padding(4)
.frame(width: 72, height: 72) }
struct CarList_Previews: PreviewProvider {
static var previews: some View {
CarView()
.previewDevice("iPhone XS")
}
}