SwiftUI - 如何让新创建的对象进行导航 link
SwiftUI - how to get newly created object to navigation link
我有一个表单,可以在按下标有“保存”的尾随导航栏按钮时保存新客户。然后我想加载一个基于新客户对象的新视图。一种可能的方法可能是激活导航 link 具有如下所示的空视图:
NavigationLink(destination: CustomerDetailView(customer: currentCustomer), isActive: self.$showCustomerDetail) { EmptyView() }
将 showCustomerDetail
设置为 true 将触发 link。但是要获得 currentCustomer
的值,我需要一个动态获取请求,可能使用新的 UUID 作为谓词。这就是事情分崩离析的地方。我不知道如何获取对 currentCustomer 变量的提取请求的结果。
以下是代码的有用部分:
导航栏按钮
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
}), trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.showCustomerDetail = true
})
}, label: {
Text("Save")
})
获取请求
currentCustomer = FetchRequest<Customer>(entity: Customer.entity(), sortDescriptors: [], predicate: NSPredicate(format: "id == %@", custID as CVarArg))
这是合适的方法(因为 newCustomer 已经保存到数据库中,所以可以直接使用):
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
}), trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.currentCustomer = newCustomer // << here !!
self.showCustomerDetail = true
})
}, label: {
Text("Save")
})
我有一个表单,可以在按下标有“保存”的尾随导航栏按钮时保存新客户。然后我想加载一个基于新客户对象的新视图。一种可能的方法可能是激活导航 link 具有如下所示的空视图:
NavigationLink(destination: CustomerDetailView(customer: currentCustomer), isActive: self.$showCustomerDetail) { EmptyView() }
将 showCustomerDetail
设置为 true 将触发 link。但是要获得 currentCustomer
的值,我需要一个动态获取请求,可能使用新的 UUID 作为谓词。这就是事情分崩离析的地方。我不知道如何获取对 currentCustomer 变量的提取请求的结果。
以下是代码的有用部分:
导航栏按钮
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
}), trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.showCustomerDetail = true
})
}, label: {
Text("Save")
})
获取请求
currentCustomer = FetchRequest<Customer>(entity: Customer.entity(), sortDescriptors: [], predicate: NSPredicate(format: "id == %@", custID as CVarArg))
这是合适的方法(因为 newCustomer 已经保存到数据库中,所以可以直接使用):
.navigationBarItems(leading:
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}, label: {
Text("Cancel")
}), trailing:
Button(action: {
let newCustomer = Customer(context: self.moc)
newCustomer.id = UUID()
newCustomer.custName = self.name
}
self.appDelegate.saveContext()
self.currentCustomer = newCustomer // << here !!
self.showCustomerDetail = true
})
}, label: {
Text("Save")
})