swift - 如何在视图之间传递@State var?
问题描述
我不想有一个无法选择日期的视图,然后我想单击一个按钮,该按钮将打开GraphView
,并将@State
var date 发送到另一个视图,因此我可以在 GraphView 中使用 date var .
这是我到目前为止所尝试的,但它显示了错误:
传递给不带参数的调用的参数
struct ContentView: View {
@State var showGraph = false
var dateFormatterMonth: DateFormatter {
let formatter = DateFormatter()
formatter.setLocalizedDateFormatFromTemplate("M")
return formatter
}
@State var date = Date()
var body: some View {
Button(action: {
self.showGraph.toggle()
}) {
Text("Show Graph")
}.sheet(isPresented: $showGraph){
GraphView(date: date) {
}
}
if showGraph {
GraphView()
}
else {
DatePicker("Date", selection: $date, displayedComponents: .date)
.frame(width: 100, height: 20, alignment: .center)
Text("Date is \(date, formatter: dateFormatterMonth)")
}
解决方案
您需要使用 Binding in GraphView
,例如
struct GraphView: View {
@Binding var date: Date // << here !!
...
}
并通过它,
Button(action: {
self.showGraph.toggle()
}) {
Text("Show Graph")
}.sheet(isPresented: $showGraph){
GraphView(date: $date) { // << here !!
}
}
if showGraph {
GraphView(date: $date) // << here !!
}
推荐阅读
- python - multiple columns with same header tallying within pandas across multiple sheets/dataframes
- java - 如何将 arraylist 保存在 txt 中并加载存储在那里的内容?
- c# - 如何将bmp(图像)保存到文件
- node.js - Error while saving syntax, and JSON.parse code
- firebase - IOS, The source of firebase conversion is always (direct)
- dynamic - How to use copy to clipboard.js to dynamically target button to copy next textarea? (Multiple textarea on one page)
- swift - 将 @State 转换为 Publisher
- servicestack - 让 AutoQuery 分页与左连接一起工作
- python-3.x - 在 tkinter 中运行连续的动画集,中间有中断
- r - 如何修复:将 xpath 复制到脚本后出现意外标记