SwiftUI onTapGesture에 새보기 표시

Momo

SwiftUI를 사용하여 내 피자 배달 응용 프로그램을 만들고 있습니다. 나는 배열에서 자신의 색인과 관련된 동일한 이미지보기 (피자 설명 포함)를 어떻게 표시 할 수 있는지 모르겠 기 때문에 이제 막혔습니다. 줄 대신 {self.images print("ok")}사용자가 배열에서 이미지를 탭할 때마다 짧은 텍스트 설명과 함께 동일한 이미지가 표시되기를 바랍니다. 내 문제에 대한 설명이 충분히 명확합니까? 누군가 나를 도울 수 있다면 대단히 감사하겠습니다. 읽어 주셔서 감사합니다. 다음은 코드입니다.

HStack {
    ForEach(images, id: \.id) { post in
        ForEach(0..<1) { _ in
            ImageView(postImages: post)
        }
    }
    Spacer()
}
.onTapGesture {
    self.images
    print("ok")
}
.navigationBarTitle("Choose your Pizza")
.padding()
파웰로 2222

에 대한 구조체가 있다고 가정하면 다음 Item을 준수해야합니다 Identifiable.

struct Item: Identifiable {
    var id: String { name } // needed for `Identifiable`

    let name: String
    let imageName: String
    let description: String
}

그런 다음 기본보기에서 :

struct ContentView: View {
    let items = [
        Item(name: "item1", imageName: "circle", description: "some description of item 1"),
        Item(name: "item2", imageName: "circle", description: "some description of item 2"),
        Item(name: "item3", imageName: "circle", description: "some description of item 3"),
    ]

    @State var selectedItem: Item? // <- track the selected item

    var body: some View {
        NavigationView {
            HStack {
                ForEach(items, id: \.id) { item in
                    ImageView(imageName: item.imageName)
                        .onTapGesture { 
                            self.selectedItem = item // select the tapped item
                        }
                }
                Spacer()
            }
            .navigationBarTitle("Choose your Pizza")
            .padding()
        }
        .sheet(item: $selectedItem) { item in // show a new sheet if selectedItem is not `nil`
            DetailView(item: item)
        }
    }
}

이미지에 대한 사용자 정의보기가있는 경우 :

struct ImageView: View {
    let imageName: String

    var body: some View {
        Image(systemName: imageName)
    }
}

항목에 대한 상세보기를 만들 수 있습니다 (항목 설명 등) :

struct DetailView: View {
    let item: Item

    var body: some View {
        VStack {
            Text(item.name)
            Image(systemName: item.imageName)
            Text(item.description)
        }
    }
}

편집하다

다음은 동일한보기를 사용하여 이미지 또는 설명과 함께 이미지를 표시하는 다른 접근 방식입니다.

struct ContentView: View {
    @State var items = [
        Item(name: "item1", imageName: "circle", description: "some description of item 1"),
        Item(name: "item2", imageName: "circle", description: "some description of item 2"),
        Item(name: "item3", imageName: "circle", description: "some description of item 3"),
    ]

    var body: some View {
        NavigationView {
            HStack {
                ForEach(items, id: \.self) { item in
                    DetailView(item: item)
                }
                Spacer()
            }
            .navigationBarTitle("Choose your Pizza")
            .padding()
        }
    }
}
struct DetailView: View {
    @State var showDescription = false
    let item: Item

    var body: some View {
        VStack {
            Text(item.name)
            Image(systemName: item.imageName)
            if showDescription {
                Text(item.description)
            }
        }
        .onTapGesture {
            self.showDescription.toggle()
        }
    }
}

와 일치 Item 합니다 Hashable:

struct Item: Hashable

또는 대신 :

ForEach(items, id: \.self)

id명시 적으로 지정하십시오 .

ForEach(items, id: \.name)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SwiftUI의 LazyVGrid에 힌트보기 표시

분류에서Dev

ARKit 앱에서 SwiftUI보기 표시

분류에서Dev

SwiftUI에서 새보기가 푸시 될 때 TabBar 숨기기

분류에서Dev

이전 SwiftUI보기의 일부가 새로 생성 된보기에 표시되는 이유

분류에서Dev

SwiftUI보기에 비동기 호출 결과 표시

분류에서Dev

SwiftUI – 사용자에게보기에 변수 표시

분류에서Dev

보기, SwiftUI를 표시 할 때 NavigationLink에서 쉐브론 / 화살표 숨기기

분류에서Dev

SwiftUI Picker보기에 값이 표시되지 않음

분류에서Dev

NavigationView SwiftUI는 iPad에서 분할보기를 표시합니다.

분류에서Dev

NavigationLink보기에 SwiftUI 도구 모음이 표시되지 않음

분류에서Dev

iOS 14의 SwiftUI에서 두 번 표시되는보기

분류에서Dev

iOS 14, SwiftUI 인 경우에만 일부보기 표시

분류에서Dev

SwiftUI에서 여러 탐색보기의 경우 탐색 표시 줄 숨기기

분류에서Dev

swiftui에서 2 초 후보기 푸시

분류에서Dev

swiftui에서 2 초 후보기 푸시

분류에서Dev

SwiftUI 텍스트보기에 표시 할 수없는 문자가 표시되지 않습니다.

분류에서Dev

SwiftUI의 동일한보기에 탭 표시 줄과 탐색 표시 줄이 있습니까?

분류에서Dev

TabView 표시기 SwiftUI 변경

분류에서Dev

SwiftUI에서 View Controller 표시

분류에서Dev

SwiftUI에서 T의 숨기기 및 표시 애니메이션

분류에서Dev

macCatalyst 용 SwiftUI 앱에서 제목 표시 줄 숨기기

분류에서Dev

블로거의 mathjax 미리보기에서 새 줄 표시

분류에서Dev

버튼 탭시보기 숨기기 / 표시-SwiftUI

분류에서Dev

Swiftui에서 토글 스위치 켜기 및 경고 표시

분류에서Dev

swiftUI의 버튼에 SF 기호가 표시되지 않음

분류에서Dev

SwiftUI : 더보기 탭에서 탐색 표시 줄 제목을 변경 하시겠습니까?

분류에서Dev

SwiftUI에서 모달로 시트 표시

분류에서Dev

프레젠테이션-SwiftUI 상단에보기 표시 (탐색하고 싶지 않음)

분류에서Dev

내 WKWebView가 swiftUI보기에 표시되지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    SwiftUI의 LazyVGrid에 힌트보기 표시

  2. 2

    ARKit 앱에서 SwiftUI보기 표시

  3. 3

    SwiftUI에서 새보기가 푸시 될 때 TabBar 숨기기

  4. 4

    이전 SwiftUI보기의 일부가 새로 생성 된보기에 표시되는 이유

  5. 5

    SwiftUI보기에 비동기 호출 결과 표시

  6. 6

    SwiftUI – 사용자에게보기에 변수 표시

  7. 7

    보기, SwiftUI를 표시 할 때 NavigationLink에서 쉐브론 / 화살표 숨기기

  8. 8

    SwiftUI Picker보기에 값이 표시되지 않음

  9. 9

    NavigationView SwiftUI는 iPad에서 분할보기를 표시합니다.

  10. 10

    NavigationLink보기에 SwiftUI 도구 모음이 표시되지 않음

  11. 11

    iOS 14의 SwiftUI에서 두 번 표시되는보기

  12. 12

    iOS 14, SwiftUI 인 경우에만 일부보기 표시

  13. 13

    SwiftUI에서 여러 탐색보기의 경우 탐색 표시 줄 숨기기

  14. 14

    swiftui에서 2 초 후보기 푸시

  15. 15

    swiftui에서 2 초 후보기 푸시

  16. 16

    SwiftUI 텍스트보기에 표시 할 수없는 문자가 표시되지 않습니다.

  17. 17

    SwiftUI의 동일한보기에 탭 표시 줄과 탐색 표시 줄이 있습니까?

  18. 18

    TabView 표시기 SwiftUI 변경

  19. 19

    SwiftUI에서 View Controller 표시

  20. 20

    SwiftUI에서 T의 숨기기 및 표시 애니메이션

  21. 21

    macCatalyst 용 SwiftUI 앱에서 제목 표시 줄 숨기기

  22. 22

    블로거의 mathjax 미리보기에서 새 줄 표시

  23. 23

    버튼 탭시보기 숨기기 / 표시-SwiftUI

  24. 24

    Swiftui에서 토글 스위치 켜기 및 경고 표시

  25. 25

    swiftUI의 버튼에 SF 기호가 표시되지 않음

  26. 26

    SwiftUI : 더보기 탭에서 탐색 표시 줄 제목을 변경 하시겠습니까?

  27. 27

    SwiftUI에서 모달로 시트 표시

  28. 28

    프레젠테이션-SwiftUI 상단에보기 표시 (탐색하고 싶지 않음)

  29. 29

    내 WKWebView가 swiftUI보기에 표시되지 않는 이유는 무엇입니까?

뜨겁다태그

보관