@ViewBuilder content: @escaping (SwiperElement, SwiperItemResource, Dragging) -> Content我自学得很快。请帮帮忙。
发布于 2022-09-04 03:41:24
closure,更多信息在这里:https://docs.swift.org/swift-book/LanguageGuide/Closures.htmlSwiperElement?这样的后缀发布于 2022-09-04 07:48:24
@ViewBuilder是一个自定义参数属性,它从闭包构造视图。https://developer.apple.com/documentation/swiftui/viewbuilder
在使用视图生成器:)时对可选内容使用buildif。
发布于 2022-09-04 17:23:20
首先,
@ViewBuilder content: @escaping (SwiperElement, SwiperItemResource, Dragging) -> Content不是一个有效的语法:您需要指定一个var,在这种情况下,您不需要说@escaping
@ViewBuilder var content: (SwiperElement, SwiperItemResource, Dragging) -> Content或者定义一个func,其中可以说闭包是@escaping。
@ViewBuilder func myFunc(content: @escaping (SwiperElement, SwiperItemResource, Dragging) -> Content) -> some View { ... }在第一种情况下,您需要声明一个变量,它存储一个名为闭包的类型。该类型有3个输入SwiperElement, SwiperItemResource, Dragging和1个Content类型的输出。
在第二种情况下,定义一个函数,它将得到一个闭包作为它的参数。关键字@escaping意味着闭包将超过函数本身(即当函数返回时,闭包可能仍在运行)。
关于选拔赛,取决于你的意思。如果要将某些参数设置为可选参数,只需将?添加到它们中:
var x(SwiperElement?, SwiperItemResource?, Dragging?) -> Content?但是,如果您讨论的是可选的UI元素,那么您可能需要熟悉SwiftUI @State,例如解释的这里
https://stackoverflow.com/questions/73596610
复制相似问题