如何允许按钮在SwiftUI中创建新对象,而不会在重载时创建对象?

时间:2019-08-01 18:46:44

标签: swiftui

因此,我要在Swift UI中为类似于Apple Notes应用程序的“新笔记”按钮。

现在我的“新建按钮”是一个“导航链接”,如下所示:

$roleMembers = [ordered]@{}

for ($i = 0; $i -lt $roles.Count; $i++) {
  $roleMembers[$roles[$i]] = $members[$i]
}

不幸的是,这会在每次加载视图时触发我的应用创建新笔记。 :(

:// A note a second

我一直在寻找一种方法来启动按钮,但是我还没有找到成功的方法。

当我尝试模态时,我发现自己遇到了同样的问题

NavigationLink(
     destination: EditorView(makeNewNote())
) {
    Text("New")
}

我想知道解决这个问题的最佳方法是什么。

没有成功:(

编辑:

我已经提到了这个问题和文档,但是我还没有找到一种理想的通过按键进行搜索的方法。 (该函数在关闭时被触发:)

https://www.hackingwithswift.com/quick-start/swiftui/how-to-push-a-new-view-onto-a-

此外...如果您对Button("New") { self.isNew = true }.sheet(isPresented: $isNew, content: { EditorView(makeNewNote()) }) 的用途感到好奇,它基本上是将新的Core Data对象插入我应用的托管上下文中。

1 个答案:

答案 0 :(得分:1)

我不确定,但是在我看来,您的问题出在您的模型上。因为每次加载视图时,它都会调用makeNewButton()函数对吗?

也许您可以通过显示“新注释”视图并具有一个额外的“保存”按钮来解决问题,该按钮仅在触发模型后才对其进行更改。

或者,您可以使用context.rollback()放弃更改。另外,请检出this Project。它是Beta 4,但工作原理相同,而imo是如何在SwiftUI中使用CoreData的一个很好的例子。 :)