概要
使いまわせるviewは、できるだけ細かく作って、車輪の再開発だけは避けたい!!!
と思い、List用のcellのviewを作成。
しかし、cellにあるNavigationLinkのdestinationプロパティの値で怒られ、ハマる。。。
Cannot find type 'Destination' in scopeで怒られ、引数に遷移したいviewを渡せない。。。
struct NavigationLinkView: View {
var body: some View {
VStack(spacing: 30) {
NavigationLinkCell(title: "home", destination: HomeView())
NavigationLinkCell(title: "favorite", destination: FavoriteView())
NavigationLinkCell(title: "test", destination: TestView())
}
}
}
struct NavigationLinkCell: View{
let title: String
let destination: Destination
var body: some View {
NavigationLink(destination: destination) {
Text(title)
}
}
}
struct HomeView: View {
var body: some View {
Text("HomeView")
}
}
struct FavoriteView: View {
var body: some View {
Text("FavoriteView")
}
}
struct TestView: View {
var body: some View {
Text("TestView")
}
}
解決策
"Destination : View" 型をつけてやります。
struct NavigationLinkCell<Destination : View>: View{
let title: String
let destination: Destination
var body: some View {
NavigationLink(destination: destination) {
Text(title)
}
}
}