JAH*_*lia 3 xcode swift swiftui navigationlink
我无法阻止SwiftUI'sNavigationLink在 a 中被激活List,我有这段简单的代码,在决定是否显示详细信息页面之前,我需要在其中进行某种业务检查(在现实世界的应用程序中,可能会有某些业务逻辑发生在按钮的操作内):
struct ContentView: View {
@State var showDetail = false
var body: some View {
NavigationView {
List {
Text("Text 1")
Text("Text 2")
Text("Text 3")
NavigationLink(destination: DetailView(), isActive: $showDetail) {
LinkView(showDetails: $showDetail)
}
}
}
}
}
struct LinkView: View {
@Binding var showDetails: Bool
var body: some View {
Button(action: {
self.showDetails = false
}) {
Text("Open Details")
}
}
}
struct DetailView: View {
var body: some View {
Text("Detail View")
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何防止导航链接打开详细信息页面?这是 SDK 中的错误吗?
ps XCode版本:13.3.1和iOS版本(真机):13.3.1
编辑
我无法将 List 替换ScrollView为 因为我的真实应用程序中有一个ForEach项目列表,所以不要发布考虑使用 的答案ScrollView。
\n\n\n在现实世界的应用程序中,按钮操作中可能会发生一些业务逻辑
\n
似乎有点不合逻辑。您可以简单地有条件地禁用该链接(并通过视觉外观通知用户该链接不可用)
\n\nNavigationLink(...).disabled(onCondition)\nRun Code Online (Sandbox Code Playgroud)\n\n在哪里
\n\nfunc disabled(_ disabled: Bool) -> some View\nRun Code Online (Sandbox Code Playgroud)\n\n参数
\n\n残疾人
\n\n一个布尔值,确定用户是否可以与此视图交互。
\n\n返回值
\n\n控制用户是否可以与该视图交互的视图。
\n\n讨论
\n\n视图层次结构中的较高视图可以覆盖您在此视图上设置的值。在以下示例中,该按钮\xe2\x80\x99t 是交互式的,因为外部的disabled(_:) 修饰符会覆盖内部的修饰符:
\n\nHStack {\n Button(Text("Press")) {}\n .disabled(false)\n}\n.disabled(true)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6741 次 |
| 最近记录: |