问题标签 [swiftui-form]
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.
firebase-realtime-database - 表单中的 SwiftUI 选择器 - 索引超出范围
当我尝试在 Text() 中显示选择器的选定数据时,会出现一个名为“索引超出范围”的错误。
但是,当我评论显示所选数据的 Text() 时,它工作正常。以下是表单中选择器的代码。
下面是我评论“Text(allVM[vmIndex])”时我的应用程序的图像
下面是我用来从 firebase 检索数据并存储到数组中的代码。
*更改后我的代码:
swiftui - 无法点击Form中的NavigationLink(SwiftUI)
}
我想使用带部分的表单来构建我的列表,并且我还想要一些行单击以导航到另一个视图,但它不适用于我的代码。
更新完整代码,我可以在 Xcode12 SwiftUI Preview 中使用此代码,但不能在模拟器和 ture 设备中使用
最后,测试一下,我有一个带有 SettingView() 的 TabView,单个 SettingView 可以打开 NavigationLink 但在 TabView 中无法工作
swiftui - 在 SwiftUI Picker 中为 NSManagedObject 设置默认值?
我正在使用Picker
SwiftUI 从 Core Data 列表中进行选择NSManagedObject
,并且无法让选择器显示默认值。选择后也不会设置新值。有没有办法让选择器显示默认值?
这是我的 NSManagedObject 属性设置的地方。
这就是我尝试使用它的地方。
date - CompactDatePickerStyle SwiftUI 中的部分范围问题
我在 SwiftUI(iOS 14)的表单中使用 DatePicker。默认情况下,我可以获得 CompactDataPickerStyle 日期选择器。选择器突出显示当前日期。它还允许选择以前的日期。现在,我使用“in”参数指定部分范围,以允许用户仅选择未来日期,如下所示:
日期选择器在打开时不显示当前月份,而是显示未来日期。
任何其他面临相同问题或对我们如何解决此问题有一些想法的人。
swiftui - 当键盘出现时,表单中的 SwiftUI DatePicker 会消失
我有一个 SwiftUI Form
,Section
其中包含一个DatePicker
. 默认情况下,DatePicker
设置为具有 a datePickerStyle
of CompactDatePickerStyle()
,因为它位于 a 中Form
。
点击 时DatePicker
,会显示叠加层:
可以通过DatePicker
使用手势来修改时间,如以下视频所示:
在下面的视频中,DatePicker
通过键盘点击覆盖的时间来修改它会导致覆盖被解除:
我还尝试将以下内容添加到DatePicker
以允许内联日期操作,希望避免使用键盘:
但是,上述结果如下:
我需要更改什么以允许DatePicker
通过表单中的手势和键盘输入进行操作?
swift - 表单中的 SwiftUI 子视图
我想了解是否有可能在 SwiftUI 中的表单中本质上拥有一个表单来帮助进行代码抽象。我将在下面举一个简单的例子,所以说我们有最简单的形式
设置
添加新表单
现在我想添加一个新的子表单,但我不希望它的逻辑使主表单视图复杂化。在这里您可以看到我已添加SubForm
为新视图及其所有依赖项(忽略状态变量,它们只是为了确保 swift 不会抱怨。实际上,子表单可以链接到它想要的任何状态)
但现在表格看起来像这样:
如您所见,子表单本质上位于一个列表项中。这实际上会导致导航链接的可用性问题。
一个明显的问题是 Form 本质上是一个 List,而 List 不会展平VStacks
甚至是其他Form
s(想象一下子视图被包裹在 aForm
而不是VStack
it 中)。
但是,我真的很想保留 Form 提供的样式,但也想做这种逻辑分组。黄金标准如下所示:
你能推荐任何其他方式来实现这种抽象,同时保持一个可用的表单吗?
提前喝彩
swiftui - Form 和 List 两次渲染子视图
以下行为有点出乎意料。我有一个带有简单视图的表单,如下所示:
当表单呈现时,Text
它出现两次,然后立即消失。尽管表单在输出后呈现:
同样的行为适用于List
. 我希望列表或表单的内容只呈现一次。
我在 iOS 14 上使用 XCode 12.0GM。
swift - SwiftUI:将 UI 控件直接绑定到模型的属性与为每个输入声明单独的 @State
我正在寻找一些关于 SwiftUI 推荐做法的建议
当我们设计一个需要捕获用户输入的视图时,这些输入需要被捕获到一个模型对象中,该模型对象最终将被保存并稍后检索以显示在某些场景中,推荐什么
选项#1。每个子视图都有其本地 @State 变量,这些变量绑定到控件,如 TextField、Pickers、Toggle 等,然后我们应该编写一些代码将这些传递给模型对象
选项#1 的模型
选项#2。我们是否应该将模型的属性直接绑定到 TextField、Pickers、Toggle 等?
选项#2 的模型
}
在选项#1 中,我看到需要编写大量代码来捕获状态,然后将状态转移到模型,但在选项#2 中,状态已经在模型对象中捕获,因此代码更少。此外,任何触发其他属性更改的相互关系和依赖关系都可以在模型本身中编码(在 didSet 中)。例如,我可以将 heightInput 和 weight 输入绑定到 TextField 并提取 Model 本身中的底层值,而不是在 View 中处理 String 并将其转换为 View 中某处的 Double 类型属性
选项#3。就像我们将单个视图分解为子视图一样,我们是否也应该将模型(结构)分解为更小的子模型并将子模型分配给子视图?像下面
在采用上述实践(或设计选择)之一之前,是否应该注意任何陷阱,以便现在可以避免以后的重构或管理不善?
我发现将模型的属性直接绑定到 UI 控件更容易,而不是在每个视图中创建本地 @State,因为它导致 UI 中的代码更少,模型中的代码集中。这是正确的评估还是错误的评估?