【发布时间】:2019-07-02 20:59:16
【问题描述】:
我想将经典的 iOS 工作流程与 List —> 详细视图屏幕一起使用。而且我想不出在打开列表视图和在列表视图和详细视图之间移动时创建对象的确切一个实例的方法。通常我会使用跟随模式。
var detailVC = UIStoryboard.initiateDetailViewController()
detailVC.objectToEdit = MyObject(val1: "SomeVal", val2: "SomeAnotherVal")
detailVC.present()
所以这没关系。我正在创建 VC,手动分配应该为 DetailView 存储数据的对象,为其分配新对象,然后将其推送到导航堆栈。
但在 swiftUI 中我无法这样做。
PresentationButton(destination: MyDetailViewController()) {
Text("Add new object")
}
上面的模式将失败,因为它会创建 1 个新的 MyObject,即使它只是呈现 ListView() 本身。在点击该按钮并关闭 DetailView 视图后,它将创建另外 2 或 3 个对象实例。
其他按钮和工具,如NavigationLink、.presentation()(实际上我不知道 SwiftUI 中还有什么其他导航模式)都是一样的。
因此,我发现添加新数据对象的唯一方法是使用控制流和布尔变量修改当前视图,但我认为这两种架构的用户体验都非常差。
那么你能建议我在 SwiftUI 中为这个案例提供什么好的模式吗?
【问题讨论】: