Home > Net >  Trailing closure passed to parameter of type 'MKCoordinateRegion' that does not accept a c
Trailing closure passed to parameter of type 'MKCoordinateRegion' that does not accept a c

Time:05-01

I'm a bit new to swift and I made an app where a welcome page would take you to a map where you can add locations and another link that takes you to the sightings of endangered animals website. On the Navigation Link to the map screen, a "Trailing closure passed to the parameter of type 'MKCoordinateRegion' that does not accept a closure" error shows up and the link wouldn't work. Here's my code:

  NavigationLink (
        "Lets Go!", destination: SwiftUIView()
    {
            Text("Lets Go!").foregroundColor(.purple)
            
        }).position(x: 165, y: 65)
        

And here's my screen

struct SwiftUIView: View {
   
    @State private var locations =
    [Location]()
    @State private var input = ""
    @State var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 40.7, longitude: -90), span: MKCoordinateSpan(latitudeDelta: 40, longitudeDelta: 40))
    var body: some View {
       

        ZStack{
            Image("Eco").resizable().aspectRatio(contentMode:.fit).frame(width: 75.0, height: 75.0).position(x: 155, y: 30)
        Text("EcoBuild")
            Text("Add your own sightings!")
            Map(coordinateRegion: $region,annotationItems: locations){
                location in MapMarker(coordinate: CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude))
            }.frame(width: 330.0, height: 400.0).position(x: 160, y: 350)
           
            Link("See other sightings here!", destination:URL(string:"https://www.mass.gov/info-details/rare-species-viewer")!).position(x:150 , y: 75.0)
                
            
            
           Button {
                let newLocation = Location(id: UUID(), name: "New Location", description: "Animals in area", latitude: region.center.latitude, longitude: region.center.longitude)
                
                locations.append(newLocation)
           } label: {
               Image(systemName: "plus")
           }
                
            }
}

CodePudding user response:

The compiler isn't giving you a very helpful error message here, but the problem is that the parameters if your NavigationLink initializer aren't quite valid. You're trying to pass a title, then a destination, then you're missing a parenthesis (which is the root cause of the funny compiler error -- it thinks that your label is a trailing closure for the SwiftUIView initializer), then you pass a label.

What you probably want is this instead:

NavigationLink {
    SwiftUIView()
} label: {
    Text("Lets Go!").foregroundColor(.purple)
}.position(x: 165, y: 65)
  • Related