SwiftUI:NavigationLink 在 WatchOS 8.1RC 的 Tabview 中立即弹出

2024-07-03

我发现 watchOS 8.1RC 中存在从 TabView 触发的 NavigationLink 的回归。 马上就被驳回了。

它在 watchOS 8.0 或模拟器 (watchOS 8.0) 中运行。 你知道解决方法吗? 谢谢

示例代码:

import SwiftUI

@main
struct TestNavigationApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationView {
                ContentView()
            }
        }
    }
}

struct ContentView: View {
    var body: some View {
        List {
            NavigationLink(destination: ContentView1()) {
                Text("To TabView")
            }
        }
        
    }
}

struct ContentView1: View {
    var body: some View {
        TabView {
            NavigationView {
                NavigationLink(destination: ContentView2()) {
                    Text("To ContentView2")
                }
            }
            VStack {
                Text("Screen2")
            }
        }
    }
}

struct ContentView2: View {
    var body: some View {
        Text("ContentView2")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我在使用 watchOS 8.1(和 8.3 beta)时遇到了同样的问题,而它与以前的 watchOS 版本一起使用。

通过将 NavigationView 移动到 TabView 内,我们能够使其再次工作。这个解决方法根本不理想,但似乎确实有效。

@State private var tabSelection = 1

var body: some Scene {
    WindowGroup {
        TabView(selection: $tabSelection) {
            NavigationView {
                // List goes here
            }
            .tag(1)
            
            VStack(alignment: .center, spacing: 12, content: {
                
                // content 2nd tab: we didn't have a list in the 2nd tab
            })
            .tag(2)
        }
    }
}

但是,此修复会影响两件事:

我没有让 navigationBarTitle 工作,所以屏幕顶部不会有标题。 如果您单击列表中的某个项目,它将导航到您的页面(如预期),但屏幕底部的 TabView 点将保留。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI:NavigationLink 在 WatchOS 8.1RC 的 Tabview 中立即弹出 的相关文章

  • SwiftUI - ForEach 与 Stride

    我试图创建一个 Hstack d 卡列表 也就是说 我想创建一系列行的滚动视图 每行将包含一个 HStack 其中两个视图并排显示 并由某种列表数据结构初始化 struct MyHStackView View var myArray Som
  • 如何在 SwiftUI 中仅使用 ForEach 而不是列表来滑动删除

    我正在 SwiftUI 中使用 ForEach 制作自定义列表 我的目标是进行滑动删除手势 而不是将 ForEach 嵌入到列表中 到目前为止 这是我的代码 import SwiftUI struct ContentView View le
  • 在 SwiftUI 中使用可观察对象切换视图

    我正在练习尝试使用 SwiftUI 中的可观察对象切换视图 但我的代码无法正常工作 我知道我可以用 State 来做到这一点 但我想用可观察的对象来实现这一点 当我单击内容视图中的图像时 图像不会改变 有人能帮我吗 内容视图 swift i
  • 在模拟器/预览版上运行的 SwiftUI:切换不起作用,控制台日志:“无效模式‘kCFRunLoopCommonModes’”

    更新 这是一条红鲱鱼 所以我最初的问题是问如何禁用导航链接 并且仅在两个链接时才启用Toggle影响两个 State var isXYZToggleOn Bool属性都是true 这一直有效 我第一次尝试使用 disabled hasAgr
  • SwiftUI 键盘工具栏有条件

    不确定这是否是一个错误或者我是否做错了什么 但如果我使用 toolbar ToolbarItemGroup placement navigationBarLeading if isFocused zipCode Text Test 当等于
  • 等高的 SwiftUI HStack

    我想要Text 111 具有相同的高度VStack包含 2222 和 333 struct Test7 View var body some View HStack alignment top Text 111 Shall have equ
  • 如何更改 SwiftUI 列表中分隔符的颜色?

    我在 SwiftUI 中创建了一个列表 我想更改颜色或删除分隔符 因为在 UIKit 中 我们可以轻松更改 TableView 中分隔符的颜色 下面是 SwiftUI 中列表的代码和 UI 图片 State private var user
  • SwiftUI 全屏图像背景

    我想在背景中显示全屏图像 我已经实现了这个 struct LoginView View var body some View VStack Spacer Text Hallo Text Hallo2 Text Hallo2 Text Hal
  • SwiftUI 自动调整底部工作表的大小

    SwiftUI 有很多底部工作表的示例 但是它们都指定了使用 GeometryReader 工作表可以增长到的某种类型的最大高度 我想要的是创建一个底部工作表 其高度仅与其中的内容一样高 我使用首选项键提出了下面的解决方案 但必须有更好的解
  • SwiftUI Switch 语句转换行为不符合预期

    我越来越出乎意料 transition使用时的行为switch更新视图的语句与使用两个语句时的比较if声明 他们俩if语句正在按预期将视图滑入和滑出 但是 相同的转换switch语句导致视图从一侧滑入并从另一侧退出 我正在寻找使用switc
  • 如何使用符合“Hashable”协议的 ForEach

    您好 我有一个关于确认协议 Hashable 的问题 实在是太烂了 这是我的模型 struct Page Decodable Identifiable var id String var name String var thumbnail
  • 文本字段中的 SwiftUI 颜色输入

    我遇到了 SwiftUI 的问题 当用户输入文本字段时 我需要将文本字段中的所有字母设置为红色 将所有数字设置为黑色 假设我有这个代码 TextField A99 text viewModel code padding trailing m
  • Apple Watch 表 - 前 4 行未出现

    我在添加行时遇到问题WKInterfaceTable在苹果手表上 奇怪的是 无论我做什么 前 4 行都显示为空 我尝试手动添加行并循环 没关系 我相信我的代码很好 因为第五行和其他行看起来都很好 发生的情况如下 进一步滚动 My code
  • 如何将 UserDefaults 与 SwiftUI 结合使用?

    struct ContentView View State var settingsConfiguration Settings struct Settings var passwordLength Double 20 var moreSp
  • 从 SwiftUI 视图转至 UIViewController

    我正在努力将一些 SwiftUI 内容实现到我现有的应用程序中 我目前有一个 UIViewController 它托管一个用于相机预览的 MTKView 我创建了一个新的 SwiftUI 视图 它现在是我的root视图 如我的设置Scene
  • 自定义导航栏 SwiftUI 上仅可见后退按钮

    我在之前的视图之一中有一个 NavigationView 但是 如果我不向此视图添加另一个导航视图 我只会看到带有默认 当我将导航视图添加到该视图时 我有双导航栏 一个带有 我创建的一个 找不到摆脱这个问题的方法 struct MainPa
  • SwiftUI 多个标签垂直对齐

    有很多解决方案可以尝试使用 VStack 内的 HStack 在 SwiftUI 中对齐多个图像和文本 有什么办法可以实现多个标签吗 添加到列表中时 多个标签会自动垂直对齐 当它们嵌入到 VStack 中时 是否有一种简单的方法可以做到这一
  • 在没有按钮的 SwiftUI 中呈现新视图

    所以我想使用 SwiftUI 呈现一个新视图 而用户不必点击按钮 因为NavigationButton会用那个 这是一个例子 struct ContentView View var model Model var body some Vie
  • 从 WatchOS 捕获 Apple Watch 的型号标识符

    似乎没有任何记录的官方方法可以从手表应用程序获取 Apple Watch 模型 但有一篇文章显示了特殊用途sysctlbyname 如何确定Apple Watch型号 https stackoverflow com questions 49
  • 更新 CoreData 中的数据及其在视图中的值

    我是 Swift 和 CoreData 开发新手 我一直在努力处理以下代码 该代码显示一个视图 其中包含与 CoreData 一起存储的学生的一些信息 视图中显示的 提问 按钮会更新 Student questionAskedClass 但

随机推荐