我正在尝试创建一个自定义的SwiftUI视图,它像默认视图一样运作,我可以使用方法或可选的初始化参数添加额外的内容到视图中。
SomeCustomView(title: "string argument") {
// some view
}
SomeCustomView(title: "hello") {
// some view
}.sideContent {
// another view
}
// This style is acceptable too
SomeCustomView(title: "hello", sideContent: { /* another view */ }) {
// some view
}
我该如何修改这个视图结构体,使其表现类似于上面的示例?
struct SomeCustomView<Content>: View where Content: View {
let title: String
let content: Content
init(title: String, @ViewBuilder content: () -> Content) {
self.title = title
self.content = content()
}
var body: some View {
VStack {
Text(title)
content
}
}
}
理想情况下,我希望有两个不同的正文 "模板",根据是否调用 sideContent
方法或设置了 sideContent
参数来切换。例如,
var body: some View {
VStack {
Text(title)
content
}
}
// or
var otherBody: some View {
HStack {
VStack {
Text(title)
content
}
sideContent
}
}
if
语句并包含一个侧视图或不包含? - mattnil
或者可能是EmptyView
。 - jcdl