相关疑难解决方法(0)

如何将一个SwiftUI View作为变量传递给另一个View结构

我正在实现一个非常自定义的NavigationLink MenuItem,它想在整个项目中重复使用。这是一个符合View和实现的结构,var body : some View其中包含NavigationLink。我需要以某种方式将将要呈现的视图存储NavigationLink在主体中,MenuItem但尚未这样做。

destinationViewMenuItem的主体中定义为,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...
    }
}
Run Code Online (Sandbox Code Playgroud)

->错误:由于协议“视图”具有“自身”或相关类型要求,因此只能用作通用约束。

第二次尝试:

struct MenuItem: View {
    private var destinationView: some View

    init<V>(destinationView: V) where V: View {
        self.destinationView = destinationView …
Run Code Online (Sandbox Code Playgroud)

generics protocols view swift swiftui

7
推荐指数
7
解决办法
2013
查看次数

标签 统计

generics ×1

protocols ×1

swift ×1

swiftui ×1

view ×1