swiftui表单没有出现在列表中
Posted
技术标签:
【中文标题】swiftui表单没有出现在列表中【英文标题】:swiftui forms not appearing inside list 【发布时间】:2020-03-18 18:57:07 【问题描述】:我正在开发一个需要用户填写表格的应用程序。表单实际上不是问题,但问题是当我动态地想要不止一个表单时。形式的数量(相同的外观)取决于一定的数量。所以我决定创建一个模型并将表单放入列表中。这样,表格的数量将等于第 n 个数字。问题是他们没有出现。如果我删除他们出现的表格,如果我输入他们没有的表格。是不是列表中不允许有表格?
以下是预期结果
但是当我在列表中添加表单时,我得到
这是我的简单列表:
struct UserTab: View
let seats = ["A4", "B2", "C1", "D3"]
var body: some View
List(seats, id: \.self)seat in
PassengerInfoModel()
PassengerInfoModel 如下:
struct PassengerInfoModel: View
@State private var fullName: String = ""
var body: some View
Form
Text("Paasenger 1")
TextField("Full name", text: $fullName)
提前致谢。
【问题讨论】:
使用 Form 将无法达到预期的效果,因为它现在具有不同的外观和感觉(请参阅 Form 示例 ios 内置设置)。您需要为您的 PassengerInfo 自定义视图(并且可能在 ScrollView 而不是 List 中,但它可能取决于)。而且,顺便说一句,Form 本身就是一种 List,所以 List 中的 Form 会表现得很奇怪。而且,顺便说一句,它们就在那里,只需在行内滚动即可。 我想我明白你的意思。因此,为了实现所需的行为,我无法通过形式获得它。我必须手动创建(假装)表单并使用它。我说的对吗? 【参考方案1】:因为没有确定表单框架,所以会得到这个结果。 尝试在表单中添加一些框架,应该没问题
struct PassengerInfoModel: View
@State private var fullName: String = ""
var body: some View
Form
Text("Paasenger 1")
TextField("Full name", text: $fullName)
.frame(height: 200)
一般情况下,您应该避免在 Scrollview
中使用 Form
,因为它们都有滚动功能并且无法按您的意愿工作
【讨论】:
感谢您的回答和快速响应,添加框架后出现奇怪的行为。我可以滚动一个表单,而其他表单仍然(不移动)并且不滚动 这是因为你使用的是scrollview里面的表单,并且两者都有滚动行为,滚动冲突。为避免这种情况,您应该在代码中只使用这些元素之一 所以...如果我不能在 List 中使用表单,因为它们都有滚动行为,并且我不能单独使用表单和某种循环(滚动),我该如何实现? 为什么需要使用表单?您可以使用滚动视图实现 UI,并在滚动视图中设置自定义视图以上是关于swiftui表单没有出现在列表中的主要内容,如果未能解决你的问题,请参考以下文章