作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下 View 是 List() 的第一行,用于替换隐藏的导航栏。
它的左侧有一个后退导航按钮,中间有一个居中的标题,右侧有一个可选按钮。
父 View 负责通过可选的@ViewBuilder 闭包实现可选的右键。
如果父 View 没有实现任何右键,我需要提供一个默认的占位符框架以确保标题保持居中。
问题是如何检查闭包是否为空,因为将它与 EmptyView 进行比较会给出以下异常:
if self.content == EmptyView() {}
Binary operator '==' cannot be applied to operands of type '() ->Content?' and 'EmptyView'
并通过下一个警告将其与 nil 进行比较:
if self.content == nil {}
Comparing non-optional value of type '() -> Content?' to 'nil' alwaysreturns 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)
}
关于swift - 如何检查可选的@ViewBuilder 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66034129/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!