在推送视图中修改列表绑定属性时,SwiftUI 导航会弹出

2024-01-08

当我从向下推 2+ 层的视图中的数组更新绑定属性时,导航会在属性更改后立即弹出。

Xcode 13.3 测试版、iOS 15。

我创建了一个简单的演示,代码如下。

Shopping Lists List Edit List section Edit
ShoppingListsView ShoppingListEditView ShoppingListEditsectionView

更新列表标题(一个视图深)就可以了,导航堆栈保持不变,如果我返回,更改就会发布。但是,当调整部分标题(两层深)时,一旦我对属性进行了一次更改,导航就会弹出。

我有一种感觉,我在这里缺少基本的基础知识,而且我有一种感觉,它一定与列表有关id?但我正在努力弄清楚或解决它。

GIF

Code:

Models:

struct ShoppingList {
    let id: String = UUID().uuidString
    var title: String
    var sections: [ShoppingListSection]
}

struct ShoppingListSection {
    let id: String = UUID().uuidString
    var title: String
}

查看型号:

final class ShoppingListsViewModel: ObservableObject {
    @Published var shoppingLists: [ShoppingList] = [
        .init(
            title: "Shopping List 01",
            sections: [
                .init(title: "Fresh food")
            ]
        )
    ]
}

内容查看:

struct ContentView: View {
    var body: some View {
        NavigationView {
            ShoppingListsView()
        }
    }
}

购物清单视图

struct ShoppingListsView: View {
    @StateObject private var viewModel = ShoppingListsViewModel()

    var body: some View {
        List($viewModel.shoppingLists, id: \.id) { $shoppingList in
            NavigationLink(destination: ShoppingListEditView(shoppingList: $shoppingList)) {
                Text(shoppingList.title)
            }
        }
        .navigationBarTitle("Shopping Lists")
    }
}

购物清单编辑视图

struct ShoppingListEditView: View {
    @Binding var shoppingList: ShoppingList

    var body: some View {
        Form {
            Section(header: Text("Title")) {
                TextField("Title", text: $shoppingList.title)
            }
            Section(header: Text("Sections")) {
                List($shoppingList.sections, id: \.id) { $section in
                    NavigationLink(destination: ShoppingListSectionEditView(section: $section)) {
                        Text(section.title)
                    }
                }
            }
        }
        .navigationBarTitle("Edit list")
    }
}

购物列表部分编辑视图

struct ShoppingListSectionEditView: View {
    @Binding var section: ShoppingListSection

    var body: some View {
        Form {
            Section(header: Text("Title")) {
                TextField("title", text: $section.title)
            }
        }
        .navigationBarTitle("Edit section")
    }
}


试试这个,对我有用:

struct ContentView: View {
    var body: some View {
        NavigationView {
            ShoppingListsView()
        }.navigationViewStyle(.stack)  // <--- here
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在推送视图中修改列表绑定属性时,SwiftUI 导航会弹出 的相关文章

  • 在 SwiftUI (5) 和 Xcode (12.4) 中实现 AdMob 插页式广告

    我正在努力在我的应用程序中实现插页式广告 但对 AdMob 提供的文档和新的 SwiftUI 应用程序结构遇到了一些困惑 这里是app swift文件 显示我已经实现了 GoogleMobileAds 并在didFinishLaunchin
  • 如何将 ToolbarItem 放置在后缘?

    我试图将工具栏项目放置在工具栏 MacOS 的后缘上 我浏览了文档 发现以下内容 automatic 项目被放置在center bottomBar 对于 MacOS 不适用 cancellationAction 与工作表相关 confirm
  • SwiftUI:类型不符合协议“UIViewRepresentable”//我的代码

    我正在开发一个新的 SwiftUI 应用程序 我正在尝试弄清楚如何使这个 Swift 项目与 SwiftUI 兼容 在此示例中 我正在开发带有方向的地图 问题是我无法使 UIViewRepresentable 工作 我收到错误 类型 Dir
  • 水平滚动视图无法正常工作 swiftUI

    我试图显示一些水平视图 但它不起作用 下面是我正在使用的代码 State var userDataList UserModel var body some View VStack spacing 10 VStack prefView pad
  • WatchKit WatchOS - Apple Watch 上从未显示位置服务提示

    当我打电话时requestWhenInUseAuthorization 从 Watch 应用程序中 位置服务提示永远不会向用户显示 无论是在 Watch 应用程序中 还是在 iPhone 应用程序中 The 支持无需安装iOS应用程序即可运
  • 在视图之间传递变量 SwiftUI

    再次基本问题 我想让变量 anytext 对于我要添加的所有未来视图都可见且可访问 在我的例子中 变量将是String 如果是的话 程序会改变吗 Float 我怎样才能将其另存为全局变量 如果我重新启动应用程序 变量会自行删除吗 如何保存即
  • Swiftui Binding 操作尝试每帧更新多次

    我在调试文本字段输入的问题时遇到问题 信息 MacOs 蒙特利版本 12 0 Beta 21A5284e Xcode 13 0 beta 3 13A5192j 实体手机IOS 15 0 19A297e 问题说明 当我尝试输入绑定到视图模型的
  • SwiftUI - 将数据传递到不同的视图

    我正在开发一个有 4 个不同视图的应用程序 主视图 内容视图 an AddView an EditView 以及一个分离的DataView在一个类中 我通过一个传递所有数据可观察对象到其他意见 在主视图中我有一个项目列表 在里面AddVie
  • SwiftUI 双向绑定到枚举案例中 ObservableObject 内的值

    我正在尝试观察 a 的变化bool包含在一个值ObservableObject这是一个值enum案件 这是我想要实现的目标的示例 但使用当前的方法我收到错误Use of unresolved identifier type1Value im
  • 使用 SwiftUI 的新 iOS 14 生命周期访问 AppDelegate 中的 AppState

    我正在使用 iOS 14 中推出的 SwiftUI 新应用程序生命周期 但是 我不知道如何访问我的AppState 单一事实来源 对象应用程序代理 我需要应用程序代理在启动时运行代码并注册通知 didFinishLaunchingWithO
  • 如何在 SwiftUI 中管理 AVPlayer 状态

    我有 SwiftUI 中的 URL 列表 当我点击某个项目时 我会呈现一个全屏视频播放器 我有一个 EnvironmentObject它处理一些查看器选项 例如 是否显示时间码 我还有一个显示和隐藏时间码的切换开关 我只在本例中包含了该切换
  • StateObject 作为 init() 中另一个对象的参数

    我试图将 StateObject 用户传递给authenticationHelper 但我不能 因为 IDE 说 在初始化所有存储的属性之前使用 self 即使它是在结构体的开头初始化的 我考虑过将 user 的初始化移至 init 但同样
  • 前置条件失败:从 iOS 13.4 开始,在 SwiftUI 中使用 GeometryReader 时输入索引无效

    昨天 我将 XCode 和我的项目升级到 iOS 13 4 我开始在使用 GeometryReaders 的视图周围看到很多失败 除了 前提条件失败 输入索引无效 之外 该错误没有显示任何内容 升级到 13 4 1 后我遇到了完全相同的问题
  • 如何在 TextField (SwiftUI) 上添加底线

    I use Rectangle 在 TextField SwiftUI 上添加底部边框 但我想用protocol TextFieldStyle对于 TextField 样式的底线 如 RoundedBorderTextFieldStyle
  • 按下后退按钮时 SwiftUI 工具栏项目被剪裁

    我在 SwiftUI 中遇到了一种奇怪的行为 我似乎无法解决它 鉴于以下简单的示例应用程序 我遇到了这种行为 工具栏项目在初始运行时正确呈现 但导航离开并返回它会被剪切 重新创建此示例代码 内容视图 swift import SwiftUI
  • 在 Swift 2.0 中隐藏 Home 指示器

    我希望隐藏 Home Indicator 虽然这在 Swift 中很简单 但在 SwiftUI 中似乎并不那么容易 我尝试使用这个 如何使用 SwiftUI 隐藏 home 指示器 https stackoverflow com quest
  • SwiftUI TabbedView 仅显示第一个选项卡的内容

    我正在尝试建立一个TabbedView使用以下简单代码 TabbedView Text Hello world tabItemLabel Text Hello Text Foo bar tabItemLabel Text Foo 运行时 两
  • 理解 UIViewRepresentable

    斯威夫特 5 0 iOS 13 尝试了解 UIViewRepresentable 的工作原理 并将这个简单的示例放在一起 几乎就这样了 但也许完全是无稽之谈 是的 我知道 SwiftUI 中已经有一个 tapGesture 这只是一个测试
  • 在 SwiftUI 中,如何执行手势但将手势转发到其后面的视图?

    我正在创建一个工具提示系统 如果用户触摸工具提示之外的任何地方 我想关闭工具提示 我希望这样在工具提示之外的触摸既可以消除工具提示 又可以激活用户点击的任何控件 因此 您可以打开一个工具提示 然后仍然单击工具提示外部的按钮 并在第一次点击时
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa

随机推荐

  • 选择数据框中按组第一次出现的所有行(包括第一次出现)

    我一直在摸不着头脑不知道该怎么做 我正在重新组织一些不平衡的面板数据 堆叠 长格式 我需要按组 id 保留所有行 包括变量 indc D 值的第一次出现 并且还保留尚未发生这种情况的组的行 我唯一希望丢弃的行是每组中存在第二个或更多指示变量
  • Java库解析mysql异常消息

    java中是否有任何库可以解析mySQL异常并返回行 列或表信息 这样我就可以使用行或列名称来获取并显示更合适的消息 我想包含列或行信息的自定义异常消息 目前 这就是我提取信息的方式 通过使用处理一些异常情况mysql错误代码 https
  • Pandas 中滚动最大值的 Numpy 版本

    TL DR 我的问题是如何改进我的函数以超越 pandas 自己的移动最大函数 背景资料 因此 我正在使用大量移动平均线 移动最大值和移动最小值等 到目前为止 我发现的唯一类似移动窗口的功能是pandas rolling 方法 https
  • Asp.Net MVC 5 身份创建数据库管理界面

    我正在为一家小公司开发一个新的 asp net mvc 5 应用程序 并试图弄清楚如何使用新的 asp net 身份系统创建会员数据库 我认为可能有一个管理界面 我可以使用它来创建数据库并允许我添加一些用户 角色 是否有用于此任务的管理界面
  • 如何在MySQL中使用JPA自动生成区分大小写的列

    如何命令 JPA 在创建时默认将文本内容的 MySQL 数据库列设置为区分大小写 The Column http download oracle com docs cd E17410 01 javaee 6 api javax persis
  • Io 语言:异常:对象不响应“URL”

    今天我正在练习 七周七种语言 的 Io 示例 示例代码 futureResult URL with http google com fetch writeln Do something immediately while fetch goe
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • 使用 dll 的接口安全吗

    当我想导出 DLL 中的类时 从接口派生它并通过导出函数返回该接口是否是正确的方法 exported dll function which is used in the exe function MyClass Create IMyClas
  • 占用 Vaadin Gridlayout 中的可用空间,但考虑换行

    我使用 Vaadin 的 GridLayout 来可视化一些标题和值标签 GridLayout 有 2 列和几行 标题标签位于左侧 其关联的值标签位于右侧 我希望第一列消耗尽可能少的空间 第二列应该占据浏览器窗口的所有重新挖掘空间 如果值标
  • 使用 IF 条件和存储在变量中的比较运算符

    我有一套涉及比较运算符的规则 我想根据规则中存储的比较运算符的值执行一些任务 我正在按照以下方式进行操作 但它不起作用 检查以下代码 if benRules i amountCriteria Greater than comparison
  • XDocument.Save() 时出现内存异常

    我正在尝试将 XDcoument 保存到没有足够可用内存空间的拇指驱动器 这是应用程序的特殊测试条件 虽然应用程序给出了如下所示的异常 但我无法在 XDocument Save filePath 周围的 try catch 块中得到该异常
  • 如何在 AngularJS 中从我的应用程序配置中设置 $httpProvider 默认标头?

    我正在尝试设置我的 httpProvider defaults headers common X CSRF Token cookie auth token 在我的应用程序的 config 部分中 但我似乎还无法访问文档 cookie 有没有
  • 相当于Windows窗体中的canvas

    我正在创建一个简单的应用程序来显示多个图像 一个在另一个下面 在 WPF 中 我使用相当于图像数量的画布数量 并将这些画布添加到主画布中 并使用Image在每个画布上进行控制 我上传了图像 看起来不错 现在 我正在尝试在 Windows 窗
  • PHP连接Hotmail发送邮件?

    目前我正在尝试使用 PHPmailer 发送电子邮件 这是下面的代码
  • 如何在达到一定长度后分割字符串? [复制]

    这个问题在这里已经有答案了 我想在一定长度后分割字符串 假设我们有一串 消息 Who Framed Roger Rabbit 像这样分割 Who Framed Roger Rab bit 我想在 message 变量超过 10 时进行拆分
  • 如何将嵌套字典的所有值转换为字符串?

    我正在编写一个 python 应用程序 其中有一个可以嵌套到任何级别的变量字典 任何级别中的键可以是 int 或 string 但我想将所有级别的所有键和值转换为字符串 字典的嵌套方式是可变的 这使得它有点复杂 col1 0 0 1 8 2
  • “body {background-color}”适用于 HTML,但不适用于 CSS

    能够在内联中设置 HTML 正文的背景颜色属性
  • 如何使这个 C# 循环更快?

    执行摘要 如果您想继续使用 C Reed 下面的答案是最快的 如果您愿意编组到 C 我就是 那么这是一个更快的解决方案 我在 C 中有两个 55mb ushort 数组 我使用以下循环将它们组合起来 float b float number
  • 在mysql中存储金额

    我想将 3 50 存储到 mysql 表中 我有一个浮点数 将其存储在其中 但它存储为 3 5 而不是 3 50 我怎样才能让它有尾随零 不要将货币值存储为浮点数 请使用 DECIMAL 或 NUMERIC 类型 MySQL 数字类型文档
  • 在推送视图中修改列表绑定属性时,SwiftUI 导航会弹出

    当我从向下推 2 层的视图中的数组更新绑定属性时 导航会在属性更改后立即弹出 Xcode 13 3 测试版 iOS 15 我创建了一个简单的演示 代码如下 Shopping Lists List Edit List section Edit