swiftui - 如何允许在 SwiftUI 中创建新对象的按钮在重新加载时不创建对象?
问题描述
所以我在 Swift UI 中为“New Note”制作了一个按钮,类似于 Apple Notes 应用程序。
现在我的“新按钮”是一个“导航链接”,如下所示:
NavigationLink(
destination: EditorView(makeNewNote())
) {
Text("New")
}
不幸的是,这会触发我的应用程序在每次加载视图时创建一个新注释。:(
我一直在寻找一种方法来启动按钮按下的 segue,但我还没有找到成功。
当我尝试一个模态时——我发现自己遇到了同样的问题
Button("New") {
self.isNew = true
}.sheet(isPresented: $isNew, content: {
EditorView(makeNewNote())
})
我想知道解决这个问题的最佳方法是什么。
没有成功:(
编辑:
我参考了这个和文档,但我还没有找到一种通过按钮按下进行切换的方法,这是理想的。(函数dosent在闭包中被触发:)
https://www.hackingwithswift.com/quick-start/swiftui/how-to-push-a-new-view-onto-a-
另外......如果你好奇它是做什么makeNewButton()
的——它基本上将一个新的 Core Data 对象插入到我的应用程序的托管上下文中。
解决方案
我不完全确定,但在我看来,您的问题在于您的模型。因为每次您的 View 加载它都会调用该makeNewButton()
函数,对吗?
也许您可以通过显示“新注释”视图并使用额外的“保存”按钮来解决问题,该按钮仅在触发后才对模型进行更改。
或者,您可以使用context.rollback()
丢弃更改。另外,看看这个项目。它是 Beta 4,但工作原理相同,imo 是如何将 CoreData 与 SwiftUI 一起使用的一个很好的例子。:)
推荐阅读
- javascript - 如何将事件处理程序分配给自定义元素
- batch-file - CD 到 cmd 中的卷序列号 (VSN)
- pointers - Golang time.Tick 当其他 goroutine 新建一个结构并且该结构具有 []byte 切片时阻塞
- node.js - 需要帮助在 Node js 中编辑 MongoDB 文档
- c# - MongoDB 中序列化和反序列化结构的解决方法
- c++ - std::chrono::duration::max() 不适用于线程支持库
- php - PHP正则表达式来屏蔽多个电子邮件
- jquery - 如何在 bootstrap-datepicker 中设置修复日期?
- python - 可以选择在 Python 的 Twisted 中加载缓存 URL 的代理服务器
- ruby-on-rails - RAILS:将 ruby 从 2.2 升级到 2.3.3 后未加载 gem pg