포스트

TourApp (1)

이번엔 그냥 간단하게 관광지 소개 앱을 만들어 보려고 한다.

지금은 간단하게 하려고 하고 나중에 조금 더 발전 시킨다면 그때는

Grid를 사용해서 꾸미지 않을까나

List를 사용했고 기본적인것은 패스

이번엔 SwiftModel을 사용하지 않고 만들어 보려고 한다.

1
2
3
4
5
6
7
8
9
10
struct TourModel: Hashable {
    
    var title: String
    var image: String
    
    func hash(into hasher: inout Hasher) {
        hasher.combine(title)
    }
    
}

SwiftModel을 사용할때는 class를 사용했어야해서 나도모르게 class로 만들었는데

Hashable 프로토콜이 NavigationDestination에서 필요하다는걸 알았다.

CleanShot 2024-11-04 at 20 16 33

이렇게 에러가 떠버린다.

그래서 프로토콜을 적용했으나 model에서 에러가 발생.

생각을 해보다가 swiftmodel을 쓰지 않을것 같아 class에서 struct로 바꾸니 해결이 되었다.

NavigationDestination을 활용하여 클릭시 화면전환이 가능하게 하려고 했는데 되지 않았다.

NavigaionLink를 먼저 깔고 후에 List를 하니 안되는 것 같다.

이전에 만들었던 코드를 참고하니 List 안에 NavigaionLink가 있었다.

그래서 위치를 바꾸니 해결이 되었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var body: some View {
        NavigationStack {
            Text("관광 고고")
                List {
                    ForEach(tours, id: \.self) { tour in
                        NavigationLink(value: tour) {
                            CellView(title: tour.title, imageUrl: tour.imageUrl)
                        }
                    }
                }
            .navigationDestination(for: TourModel.self) { model in
                DetailView(title: model.title)
            }
        }
        
    }
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.