问题标签 [swiftui-picker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - SwiftUI Picker 在通过 NavigationLink 显示时崩溃
有没有人有以下崩溃的解决方法?
我有一个通过 NavigationLink 在父导航控制器中显示的表单,如下所示:
PickerView 有三个选择器。第一个确定显示其他哪些:
在 iOS 13.3 模拟器(和设备)中,我看到以下行为:导航到 PickerView 并选择第一个选择器的替代值将隐藏第二个选择器并显示第三个选择器,如预期的那样。但是,如果您操作第三个选择器,它将显示空白值......紧随其后的是崩溃。
崩溃显示了一个堆栈跟踪,其中包含对 [UINavigationController _navigationBar:itemEnabledAutoScrollTransition:] 的数百次调用
我认为这是一个苹果的错误。我已经提交了 FB7534235 但我想看看是否有人有任何解决方法或建议?
一种选择是使用 .disabled() 禁用(而不是隐藏)选择器,但这会导致用户界面更加混乱。
旁注:这似乎是与 NavgiationView()/NagivationLink() 和 Picker() 的交互——因为如果您注释掉 NagivationLink 并直接在 NavigationView 中呈现 PickerView,一切都会按预期工作而不会崩溃。
更新:示例案例已更新,使其成为子选择器的三向选择。感谢下面的@krjw 指出,在双向情况下,“else if”而不是两个单独的 if 语句可以产生没有崩溃的理想行为......虽然我仍然不确定为什么(除非它是,“只是一个错误”)
swift - 禁用特定的选择器项目
有没有办法禁用特定的选择器项目?在 AppKit 中,您可以NSPopUpButton
通过协议禁用项目NSMenuValidation
,但可以预见的是,禁用选择器中的标签无济于事。只是 SwiftUI 中的另一个 API 缺口?
我试过了:
并且禁用和不在这里之间没有视觉或交互差异。
swift - 如何让 SwiftUI Picker 在子视图中工作?(变灰)
我正在开发一个 SwiftUI 项目,但无法让选择器正常工作。
我将视图层次结构拆分为多个文件,初始视图将所有内容包装在 NavigationView 中。
看起来像这样:
我拥有的选择器DetailEditPage
不允许我更改它的值,尽管它确实显示了正确的当前值。
如果我直接将选择器包装在导航视图中,那么它可以工作,但现在我有一个嵌套导航视图,导致两个后退按钮,这不是我想要的。
是什么导致选择器不允许它的选择改变,我怎样才能让它工作?
编辑
以下是如何复制此内容的示例:
内容视图.swift
swift - 为什么我的选择器在 SwiftUI 中没有响应?
我尝试在分段选择器和滚轮选择器之间切换,但在单击时都没有注册选择。
swift - 选择器在 editMode 处于活动状态时不工作
我有一个视图 ( Form
),基本上,它有一个选择器和一个可由用户重新排列的项目列表。我希望该列表始终是可编辑的,因此用户不必点击“编辑”按钮(对我来说,拥有只影响表单的一小部分的“编辑”按钮似乎是不自然的)。
editMode
我通过设置环境变量:成功完成了上述始终在线编辑.environment(\.editMode, .constant(.active))
。
问题是虽然表单是可编辑的,但选择器停止工作(即,当您点击它时它不会切换到选项列表)。
这是重现我的问题的 MCVE:
显然我可以吃掉我的话并带回编辑按钮,但我想知道是否有任何方法可以保持列表可编辑并使选择器正常工作。
我已经看过this other question,但它并没有解决问题。
我知道这个问题与编辑导航链接时被禁用的事实有关。
由于editMode
是表单的一个属性,我尝试的一个选项是VStack
使用两个单独的表单创建一个,因此只有一个带有列表的表单是可编辑的。问题是我无法获得正确的布局,更不用说我以两个可滚动区域结束了。
另一个想法是使用 手动导航到选择器的列表onTapGesture
,但我还没有找到如何使用 SwiftUI 来做到这一点。
到目前为止,我唯一的解决方案是将选择器的样式更改为SegmentedPickerStyle
,但是当排序选项(枚举)增长时它不会很有用。
ios - SwiftUI 选择器标题?
我正在尝试使用Picker
进行简单的选择。目前我正在使用.inline
导航栏来显示标题。(这是我得到示例https://www.hackingwithswift.com/quick-start/swiftui/pickers-in-forms的地方)
当我尝试在 foreach或什至s 上设置内联标题时Picker
,父标题会被覆盖...ForEach
Text
有没有解决这个问题的好方法,还是我应该继续做我自己的选择器(我们那里有什么好的简单选择器)?
swiftui - 如何调整选取器中的行大小?
我目前正在将我的应用程序从界面生成器切换到 SwiftUI。我将一个水平 UIPickerview 转移到 SwiftUI 上,它的工作原理几乎相同,如果不是比以前更好的话。
问题:选择器视图中的内容(图像)比以前小得多。
问题:是否可以调整选取器中的行大小以使图像更大?
这是我的以图像为内容的水平选择器。
swiftui - 由枚举驱动的 SwiftUI 选择器:值未更新
根据 Apple 关于使用 Enum 在 SwiftUI 中的 Picker的文档,如果 enum 除了符合Identifiable
协议之外CaseIterable
,则迭代所有案例的选择器应该本地更新绑定变量。
我测试了它,它没有按预期工作。
tag
但是,如果我为每个视图传递一个,它就可以工作。
这里发生了什么事?苹果文档有错吗?该selectedFlavor
变量需要一个 type 的值Flavor
,但选择器中使用的 id 实际上是 a String
。
谢谢。