我正在实现一个名为 MenuItem
的 非常自定义 NavigationLink,并希望在整个项目中重用它。它是一个符合 View
并实现包含 NavigationLink
的 var body : some View
的结构。
我需要以某种方式存储的意见,将由 NavigationLink
提出在 MenuItem
的机构,但还没有这样做。
我已经在 MenuItem
的主体中将 destinationView
定义为 some View
,并尝试了两个初始化器:
这似乎太容易了:
struct MenuItem: View {
private var destinationView: some View
init(destinationView: View) {
self.destinationView = destinationView
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
错误: Protocol‘ View’只能作为通用约束使用,因为它有 Self 或相关的类型要求。
第二次尝试:
struct MenuItem: View {
private var destinationView: some View
init<V>(destinationView: V) where V: View {
self.destinationView = destinationView
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
错误: 无法将类型为“ V”的值赋给类型为“ some View”的值。
最后一次尝试:
struct MenuItem: View {
private var destinationView: some View
init<V>(destinationView: V) where V: View {
self.destinationView = destinationView as View
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
错误: 无法将“ View”类型的值赋给“ some View”类型。
我希望有人可以帮助我。如果导航链接可以接受一些视图作为一个论点,必须有一个方法。 谢谢 D