Hello, I'm new here. I got Preview Crashed in 2nd SwiftUI Essential Tutorial (Building List & Navigation) when I change longitude and latitude to my office and wrapped it's detail in LandmarkDetail.swift (crashed here). But it running well in MapView.siwft and CircleImage.swift. Here is my code :
//MapView.swift
import SwiftUI
import MapKit
struct MapView: View {
var coordinate: CLLocationCoordinate2D
@State private var region = MKCoordinateRegion()
var body: some View {
Map(coordinateRegion: $region)
.onAppear {
setRegion(coordinate)
}
}
private func setRegion(_ coordinate: CLLocationCoordinate2D) {
region = MKCoordinateRegion(
center: coordinate,
span: MKCoordinateSpan(
latitudeDelta: 0.005,
longitudeDelta: 0.005)
)
}
}
struct MapView_Previews: PreviewProvider {
static var previews: some View {
MapView(coordinate: CLLocationCoordinate2D(
latitude: -6.256108,
longitude: 106.880838)) //custom location, instead of default on tutorial
}
}
//CircleImage.swift
import SwiftUI
struct CircleImage: View {
var image: Image
var body: some View {
image
.resizable()
.frame(width: 250, height: 250, alignment: .center)
.clipShape(Circle())
.overlay {
Circle().stroke(.white, lineWidth: 4)
}
.shadow(radius: 7)
}
}
struct CircleImage_Previews: PreviewProvider {
static var previews: some View {
CircleImage(image: Image("bkkbn")) //custom image, instead of default on tutorial
}
}
//landmarkData.json
[
{
"name": "Lake Umbagog",
"category": "Lakes",
"city": "Errol",
"state": "New Hampshire",
"id": 1012,
"isFeatured": false,
"isFavorite": false,
"park": "Umbagog National Wildlife Refuge",
"coordinates": {
"longitude": -71.056816,
"latitude": 44.747408
},
"description": "Suscipit inceptos est felis purus aenean aliquet adipiscing diam venenatis, augue nibh duis neque aliquam tellus condimentum sagittis vivamus, cras ante etiam sit conubia elit tempus accumsan libero.",
"imageName": "umbagog"
},
{
"name": "Pusat",
"category": "Office",
"city": "Jakarta Timur",
"state": "Jakarta",
"id": 1013,
"isFeatured": true,
"isFavorite": true,
"park": "Kantor Pusat",
"coordinates": {
"longitude": -6.256108,
"latitude": 106.880838
},
"description": "Ini adalah kantor pusat.",
"imageName": "bkkbn"
}
]
//LandmarkDetail.swift
import SwiftUI
struct LandmarkDetail: View {
var landmark: Landmark
var body: some View {
ScrollView {
MapView(coordinate: landmark.locationCoordinate)
.ignoresSafeArea(edges: .top)
.frame(height: 350)
CircleImage(image: landmark.image)
.offset(y: -130)
.padding(.bottom, -130)
VStack(alignment: .leading) {
Text(landmark.name)
.font(.title)
HStack {
Text(landmark.park)
.font(.subheadline)
Spacer()
Text(landmark.state)
.font(.subheadline)
}
.font(.subheadline)
.foregroundColor(.secondary)
Divider()
Text("Deskripsi \(landmark.name)")
.font(.title3)
.foregroundColor(.secondary)
Text(landmark.description)
}
.padding()
}
.navigationTitle(landmark.name)
.navigationBarTitleDisplayMode(.inline)
}
}
struct LandmarkDetail_Previews: PreviewProvider {
static var previews: some View {
LandmarkDetail(landmark: landmarks[1])
}
}
Big thanks for any help or explanation.