如何检查可选的@ViewBuilder内容

马蒂亚斯·马索(Matias Masso)

以下视图是List()的第一行,用于替换隐藏的导航栏。

它的左侧是后退导航按钮,中间是居中标题,右侧是可选按钮。

父视图通过可选的@ViewBuilder闭包负责可选的右键按钮实现。

如果父视图未实现任何右键,则需要提供一个默认的占位符框架,以确保标题居中放置。

问题是如何检查闭包是否为空,因为将其与EmptyView进行比较会产生以下异常:

if self.content == EmptyView() {}

二进制运算符'=='不能应用于类型'()-> Content?'的操作数 和“ EmptyView”

并通过下一个警告将其与nil进行比较:

if self.content == nil {}

比较类型'()-> Content?'的非可选值 为“ nil”总是返回false

import SwiftUI

struct TestTitle<Content: View>: View {
    @Environment(\.presentationMode) var presentation
    var caption:String
    let content: () -> Content?
    
    public init(_ caption:String, @ViewBuilder content: @escaping () -> Content? = { nil })  {
        self.caption = caption
        self.content = content
    }
    
    var body: some View {
        HStack() {
            Image(systemName: "chevron.backward")
                .onTapGesture {
                    self.presentation.wrappedValue.dismiss()
                }
            
            Spacer()
            Text(self.caption)
            Spacer()
            
            **if self.content == nil** {
                Text(" ")
                    .frame(width:32)
            } else {
                self.content()
            }
        }
    }
}
他的脾气

在这里(通过Xcode 12.4测试)

if let content = content() {
        content
}
else {
    Text(" ")
        .frame(width:32)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使生成的内容可选?

来自分类Dev

如何检查是否实现了可选的重载方法?

来自分类Dev

如何检查Noobaa桶的内容

来自分类Dev

如何检查/ etc / localtime的内容?

来自分类Dev

如何检查/ dev / sdt的内容

来自分类Dev

如何在SwiftUI中使用ViewBuilder将内容限制为自定义视图/组件上的Text()

来自分类Dev

如何在输出中不显示可选内容?

来自分类Dev

如何使用Guard解开字典中的可选内容?

来自分类Dev

如何在switch语句中处理可选内容

来自分类Dev

如何修改 pdf 中的现有图层(可选内容组)?

来自分类Dev

Python:如何检查是否可以使用可选参数?

来自分类Dev

您如何检查可选字符串的长度?

来自分类Dev

如何在jq中检查可选字段?

来自分类Dev

如何在SwiftUI中计算@ViewBuilder视图?

来自分类Dev

铸造的可选或流内容

来自分类Dev

快速展开可选内容

来自分类Dev

angularjs指令:如何检查被包含的内容

来自分类Dev

如何检查Geb模块“内容”是否存在?

来自分类Dev

如何检查以python上传的内容类型文件?

来自分类Dev

如何检查传递给filter()函数的内容

来自分类Dev

如何使用Powershell检查Spring Actuator的内容

来自分类Dev

如何检查页面是否包含内容?

来自分类Dev

如何检查我要提交的内容?

来自分类Dev

如何检查可迭代对象的内容?

来自分类Dev

如何检查分区的原始内容?

来自分类Dev

您如何检查systemd更新内容?

来自分类Dev

如何检查数组的内容是否在表中?

来自分类Dev

如何检查 url 是否包含某些内容?

来自分类Dev

如何让函数检查多项内容