SwiftUI 中的选取器适用于 ForEach 的一个版本,但不适用于另一个版本 - 错误还是预期行为?

2024-01-28

看哪两个拾取器。第一个,当未注释时(第二个注释)不起作用——当我更改房间时, Text() 不会更新。但此处显示的代码(带有第二个选择器)却可以。

唯一的区别在于内容封闭。为什么我创建内容的方式会影响绑定?这是错误还是预期行为?

struct ContentView: View {
var rooms = ["Kitchen", "Dining Room", "Living Room", "Bathroom"]

@State private var selectedRoomIndex = 0

var body: some View {
    VStack {
        /* Doesn't work :-(
        Picker(selection: $selectedRoomIndex, label: Text("Room: ")) {
          ForEach(rooms, id: \.self){ room in
              Text(room)
        
          }
        }
        */

        /* This works, huzzah! But why? */
        Picker(selection: $selectedRoomIndex, label: Text("Room: ")) {
            ForEach(0 ..< rooms.count){
                Text(rooms[$0])
                
            }
        }
        
        Text("Chosen room: \(rooms[selectedRoomIndex])")
        Spacer()
    }
}

}


The Picker选择和内容ForEach数据必须是相同类型,这就是第二个变体工作的原因 - 选择是 Int 和ForEach元素是 Int,所以对于可能的第一个变体工作,它应该如下所示

使用 Xcode 12 / iOS 14 进行测试

@State private var selectedRoom: String = "Kitchen"

var body: some View {
    VStack {
        Picker(selection: $selectedRoom, label: Text("Room: ")) {
            ForEach(rooms, id: \.self){ room in
                Text(room)

            }
        }

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

SwiftUI 中的选取器适用于 ForEach 的一个版本,但不适用于另一个版本 - 错误还是预期行为? 的相关文章

  • SwiftUI 可从 NavigationView 向下搜索多个视图?

    我遇到了相关问题 searchable我想知道它是否与我的应用程序的视图层次结构有关 我可以找到的使用 Searchable 的示例说直接在 NavigationView 上使用它 并像这样显示它 var body some View Na
  • 带列表的 SwiftUI 自定义导航栏

    我制作了一个类似于下面看到的苹果列表的列表 但我真的不喜欢 UInavigation 栏的样子 理想情况下 我希望它更小或将其隐藏 以便我可以将自己的视图放在那里 我尝试使用苹果外观 api 中的以下内容来隐藏它 init UINaviga
  • 如何在 SwiftUI 中删除列表分隔线

    所以问题很简单 就在标题中 我想删除 SwiftUI iOS 14 中的行分隔符 以前 我使用的是 UITableView appearance separatorStyle none以前在 iOS 13 中可以完成这项工作 但是现在它不起
  • SwiftUI:TextField 中的多颜色文本

    我想为 TextField 中的文本更改两种不同的颜色 对于第一个单词 颜色为深灰色 对于第二个单词 颜色为浅灰色 是否可以 TextField Dumble Dore text username 还有另一种方法只使用 SwiftUI 和我
  • 如何使用 GeometryReader 而不填充视图

    这就是我想要的布局 import SwiftUI import PlaygroundSupport struct TestView View let text String var body some View Text self text
  • SwiftUI UIViewRepresentable UITextView 绑定

    目前 SwiftUI 本身不支持多行文本输入 希望很快就会添加此功能 所以我一直在尝试使用组合框架来实现 UIKit 中的 UITextView 它支持多行输入 但是我得到的结果好坏参半 这是我创建的用于制作文本视图的代码 struct M
  • 使用 Swift UI 自定义 macOS 工具栏

    我正在开发一个 macOS 应用程序 其视图层是用 SwiftUI 编写的 我知道 iOS 工具栏至少可以更改背景颜色 但是当我尝试在 macOS 中执行此操作时 它的行为并不符合我的预期 这是一个 简化的 示例 struct Conten
  • SwiftUI:两个并排列表和一个导航视图出现意外行为

    我的屏幕有两个List并排 在一个NavigationView 布局渲染正确 我可以独立滚动两个列表 问题是 当我滚动第一个列表时 它位于导航栏后面 而没有触发对其应用背景颜色的效果 下面的 gif 展示了正在发生的事情 这是我用于此视图的
  • 视图中嵌套的 ForEach(和列表)会产生意想不到的结果

    在 SwiftUI 视图中的另一个 ForEach 中执行一个 ForEach 会产生意想不到的结果 几乎就像它们踩在彼此的计数器上一样 不清楚发生了什么 我需要显示多分支数组并尝试了多种变体 但仍然遇到同样的问题 我有几个项目就出现过这种
  • SwiftUI 文本动画不透明度不起作用

    问题很简单 我到底如何才能获得Text正确设置动画 struct ContentView View State var foozle String var body some View VStack Spacer Text self foo
  • 稍后如何在 SwiftUI 中访问内容视图的元素?

    假设我有一个像这样的内容视图 struct ContentView View State private var selection 0 var body some View TabView selection selection Cust
  • 更新属性包装器(如 @StateObject)会影响不使用该属性的其他视图渲染

    当使用与视图更新关联的不同属性包装器时 一处的更改会影响不使用该属性的视图的呈现 struct ContentView View StateObject var viewModel MyViewModel State var thirdTi
  • SwiftUI:如何更改 NavigationView 的色调(背景颜色)?

    我有一个带有列表的导航视图 如何更改导航视图的颜色 还没有直接的 api要执行此操作 但您可以查看调试视图层次结构 您将看到它是一个简单的 UINavigationBar 并且所有旧解决方案也可以在这里工作 还 struct Content
  • 如何使用 NavigationLink 在 SwiftUI 中创建文本(仅文本中的一些单词)

    我正在开发适用于 iOS 的 SwiftUI 应用程序 我想以这种方式格式化文本 其中蓝色单词应该是导航链接 文本应该如何显示 我知道可以将 UIKit 实现到 SwiftUI 代码中 但是 我不明白如何以这种方式使用 UIKit 和正常工
  • 在 SwiftUI 中正确使用 Task { }

    我想了解正确的用法Task 在以下 SwiftUI 代码中 我的目标是获得基本的了解以避免内存泄漏 这是 SwiftUI 部分的示例代码 struct MyView View ObservedObject var viewModel Vie
  • SwiftUI:再次点击所选选项卡时弹出到根视图

    起点是 TabView 中的 NavigationView 我正在努力寻找一个 SwiftUI 解决方案 以便在再次点击所选选项卡时弹出到导航堆栈中的根视图 在 SwiftUI 之前的时代 这很简单 func tabBarControlle
  • 如何在 SwiftUI 中对 Imagepicker 进行两次单独的调用?

    我希望用户能够将两个单独的图像上传到同一视图的两个不同部分 我能够让第一张图像在顶部正确显示 但每当用户添加第二个图像时 顶部的图像会再次更新 而不是底部的图像 截屏 https i stack imgur com IOi90 png 下面
  • 在 SwiftUI (5) 和 Xcode (12.4) 中实现 AdMob 插页式广告

    我正在努力在我的应用程序中实现插页式广告 但对 AdMob 提供的文档和新的 SwiftUI 应用程序结构遇到了一些困惑 这里是app swift文件 显示我已经实现了 GoogleMobileAds 并在didFinishLaunchin
  • SwiftUI - TabView 禁用背景透明度

    有没有办法禁用透明度TabView for iOS 15 If my List没有填满整个屏幕TabView背景是透明的 我希望始终显示TabView背景 感谢 Asperi 为我指明了正确的方向 我发现scrollEdgeAppearan
  • WatchKit WatchOS - Apple Watch 上从未显示位置服务提示

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

随机推荐

  • 延迟脚本加载

    所以如果我有以下内容 我只是想延迟使用 settimeout 调用该文件的执行 我该怎么做 很奇怪的是 我在一个简单的函数上使用 settimeout 没有问题 但我在这个看似更简单的情况下有点困惑 我的想法是我可以创建一个在 x 时间后调
  • Apache Camel Java DSL 在正文中添加换行符

    因此 我在 Java DSL 中设置了一个 netty4 套接字路由 如下所示 Override public void configure throws Exception String dailyDataUri SOCKET daily
  • AWS 工作层 cron - 服务器错误 #500 - “发布 http 1.1 500 AWS aws-sqsd/2.0”

    我正在尝试在 Elastic Beanstalk 上设置一个 cronjob 任务正在安排中 出于测试目的 它应该每分钟运行一次 但是它不起作用 这是一个 Django 应用程序 该应用程序在两个环境中运行 一个是工作环境 另一个是 托管
  • Flutter - 检测充满其他小部件的屏幕上的点击

    我正在尝试检测屏幕上的点击 我尝试过使用的多种变体GestureDetector但这只会导致应用程序检测到点击子元素 and 不是屏幕 这是代码 class QQHome extends StatelessWidget override W
  • 如何平滑徒手绘制的 SVG 路径?

    我正在寻找一种解决方案 将由大量 auf LineTo 段组成的手绘 用户绘制的 SVG 路径转换为更平滑的路径 首选语言是 JavaScript 但欢迎任何建议 首先 我建议使用一个好的图形库 例如raphael 它将简化实际使用 jav
  • iOS 8 横向:键盘无法正确显示

    我有一个为 iOS8 编译的应用程序 该应用程序在项目设置中设置为仅允许纵向 根据设计 应用程序的视图不会旋转为横向 在 iOS7 中 当您旋转设备以横向时 键盘不会旋转 这是我想要的行为 但是 在 iOS8 中 当您将设备旋转到横向时 键
  • 使用 RecyclerView 适配器更新数据的最佳方法[重复]

    这个问题在这里已经有答案了 当我必须使用经典适配器时ListView https developer android com guide topics ui layout listview html 我在 ListView 中更新数据 如下
  • inno-setup 脚本中的可选组件和类型

    我创建了以下 InnoSetup 脚本 用于添加可选组件 遵循此 StackOverflow 答案的建议 Inno Setup 正确使用 类型 组件 和 任务 https stackoverflow com questions 889082
  • 获取额外数据透视表列的值 laravel

    我有一个phone models phone problems 和一个phone model phone problem 数据透视表 数据透视表有一个额外的列 价格 手机型号 class PhoneModel extends Eloquen
  • 图像不会出现在闪亮应用程序的 www 文件夹中

    我正在遵循上一个问题中的代码 R Shiny 将图片添加到带有文本的流体行中的框 https stackoverflow com questions 44279773 r shiny add picture to box in fluid
  • 让 Fortran 中的函数返回一个可以放置在赋值左侧的引用

    正如标题所述 我想要directly修改我通过从函数检索的指针访问的数据 函数返回的引用出现在 l h s 上 赋值 在 C 中没有问题 但 Fortran 中的以下最小示例会出错 module test mod implicit none
  • NHibernate SysCache 是否可以在非 Web 应用程序中工作?

    我知道 SysCache 在底层使用 ASP 缓存 但由于我不知道 ASP 缓存的实现 以及它是否依赖于 IIS 我想知道 SysCache 是否可以在非 Web 应用程序中工作 例如Windows 服务 激活它并使用 NHprofiler
  • 我们如何在不下载 EXSLT 源代码的情况下使用 EXSLT?

    XSLTSL http xsltsl sourceforge net id1954375似乎声称我们可以使用 EXSLT 而无需下载其源代码 直接从图书馆网站导入或包含主样式表或您希望使用的样式表模块 http xsltsl sourcef
  • 子查询未连接到主查询

    下面的查询用于从数据库中检索记录以在报告中显示 但 SENOKO AND EUNOS 专栏显示复制每行总计 这似乎是子查询未连接到主查询导致没有进行过滤 SELECT whbal customer customer imp license
  • 了解 OpenMP 有关 fork 的缺点

    我想了解它们在这里的意思 为什么这个程序会 挂起 From https bisqwit iki fi story howto openmp https bisqwit iki fi story howto openmp OpenMP 和fo
  • 如何使用 Xcode 5 构建 iOS 6? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经下载了新的 Xcode 5 0 但我想为 iOS 6 构建一个应用程序 我怎样才能从 Xcode 5 0 做到这一点 或者我是否
  • AVPlayerLayer 作为 SCNMaterial 未渲染,音频播放正常

    我正在尝试使用 AVPlayerLayer 作为要分配给 SCNSphere 的 SCNMaterial 基于 https developer apple com library mac samplecode SceneKit Slides
  • 如何在 Android 上使用 .p12 证书?

    如何在 Android 上使用 p12 证书 我尝试将其添加到Menu Settings Location和安全 当我执行此操作时 证书会从 SD 卡中消失 但是当我访问需要 p12 证书的网站时 我只会收到连接错误 证书 密码和 URL
  • 用平均值替换值

    我有一个数据框如下 Col1 Price 1 Plastic 50 2 Metal 100 3 Plastic 40 我想用 Price 中的值替换 Col1 中的值 所以我得到 Col1 Price 1 45 50 2 100 100 3
  • SwiftUI 中的选取器适用于 ForEach 的一个版本,但不适用于另一个版本 - 错误还是预期行为?

    看哪两个拾取器 第一个 当未注释时 第二个注释 不起作用 当我更改房间时 Text 不会更新 但此处显示的代码 带有第二个选择器 却可以 唯一的区别在于内容封闭 为什么我创建内容的方式会影响绑定 这是错误还是预期行为 struct Cont