【问题标题】:swiftui forms not appearing inside listswiftui表单没有出现在列表中
【发布时间】: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 会表现得很奇怪。而且,顺便说一句,它们就在那里,只需在行内滚动即可。
  • 我想我明白你的意思。因此,为了实现所需的行为,我无法通过形式获得它。我必须手动创建(假装)表单并使用它。我说的对吗?

标签: ios swiftui swiftui-list swiftui-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,并在滚动视图中设置自定义视图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多