es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

NavigationLink init(_:destination:) ha quedado obsoleto.

El inicializador de NavigationLink

init<S>(_ title: S, destination: Destination) where S : StringProtocol

está obsoleto y solo está disponible para iOS 13.0-15.2. El reemplazo es

init<S>(_ title: S, destination: () -> Destination) where S : StringProtocol

según la documentación: https://developer.apple.com/documentation/swiftui/navigationlink/init(_:destination:)-6hslu.

Reemplazar mi código existente con

NavigationLink("MyTitle") {
Text("MyView")
}

muestra el error

Type '() -> Text' cannot conform to 'View'

NavigationLink initializer error

¿Qué hay de malo en mi uso del inicializador recomendado?

EDITAR 1:
Xcode Version 12.5.1 (12E507)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema es que el parámetro de destino en el inicializador de NavigationLink espera una vista (es decir, algo que se ajuste al protocolo View), pero el cierre { Text("MyView") } devuelve una vista Text envuelta en un cierre.

    Para solucionar esto, cambia el cierre para que devuelva directamente la vista Text, de esta manera:

    NavigationLink("MyTitle") {
        Text("MyView")
    }
    

    Esto se ajustará al requisito de View y el error debería desaparecer.

Comments are closed.