在一个使用SwiftUI的非常简单的应用程序中,我有两个视图,HomeView
和DetailView
。
-
HomeView
是List
,其项目类型为Item
。此类型具有一个名为isLocked
的属性。 -
DetailView
是显示所选项目名称的简单视图。 -
Biomerty
是LAContext
的包装,该包装调用生物测定评估并以简单的Result<Bool,Error>
类型返回结果。
在使用Face / Touch ID进行身份验证后,如何将其DetailView
属性设置为isLocked
的项目导航到true
,仅仅成功吗?
// Item
struct Item
{
name: String
isLocked: Bool
}
// Row
struct Row: View
{
@Binding var item: Item
var body: some View
{
HStack
{
Image(systemName: "lock.fill")
Text($item.name)
}
}
}
// HomeView
struct HomeView: View
{
@State private var items: [Item] = [
Item(name: "Item A",isLocked: false),Item(name: "Item B",isLocked: true)
]
var body: some View
{
NavigationView
{
List(items,id: \.self)
{
if !item.isLocked
{
NavigationLink(destination: DetailView(item: $item))
{
Row(item: $item)
}
}
else
{
Row(item: $item)
.onTapGesture
{
Biometry.authenticate
{ result in
if case.failure = result
{
}
else
{
// We endup here,because the Face/Touch ID
// authentication was successful. Therefore,// it is here that I would like to
// navigate to the detail screen.
}
}
}
}
}
}
}
}
// DetailView
struct DetailView: View
{
@Binding var item: Item
var body: some View
{
Text($item.name)
}
}