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'
¿Qué hay de malo en mi uso del inicializador recomendado?
EDITAR 1:
Xcode Version 12.5.1 (12E507)
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 protocoloView
), pero el cierre{ Text("MyView") }
devuelve una vistaText
envuelta en un cierre.Para solucionar esto, cambia el cierre para que devuelva directamente la vista
Text
, de esta manera:Esto se ajustará al requisito de
View
y el error debería desaparecer.