SwiftUI:创建表单

许多应用程序都要求用户输入某种内容——可能是要求他们设置一些偏好,可能是要求他们确认他们想要车去哪里接他们,可能是从菜单上订购食物,或是其他类似的东西。

SwiftUI为此提供了一个专用的视图类型,称为Form。表单是正在滚动静态控件的列表像文本和图像,但也可以包括文本字段、切换开关、按钮等用户交互控件。

只需将默认文本视图包装在Form中,就可以创建基本表单,如下所示:

var body: some View {
    Form {
        Text("Hello World")
    }
}

如果您使用Xcode的画布,您将看到它发生了巨大的变化:以前Hello World位于白色屏幕的中心,现在屏幕是浅灰色,Hello World以白色显示在左上角。

你在这里看到的是一个数据列表的开始,就像你在设置应用程序中看到的那样。我们的数据中有一行是Hello World文本,但是我们可以更自由地添加,并让它们立即显示在我们的表单中:

Form {
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
}

事实上,尽管在一个表单中可以有任意多的内容,但是如果要添加10个以上的内容,SwiftUI则需要将内容分组以避免出现问题。

例如,这段代码显示了10行文本:

Form {
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
}

但这试图显示11行,这是不允许的:

Form {
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
    Text("Hello World")
}

提示:如果您想知道为什么允许10行,但不允许11行,这是SwiftUI的一个限制:它的编码是为了理解如何向表单添加一个内容、如何向表单添加两个内容、如何添加三个内容、四个内容、五个内容等等,一直到10行,但不能超过10行,它们需要在某处画一条线。在SwiftUI中,一个父级中有10个子级的限制实际上适用于所有地方。

如果要在表单中包含11个内容,则应将一些内容放到一个Group中:

Form {
    Group {
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
    }

    Group {
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
        Text("Hello World")
    }
}

Group实际上不会改变用户界面的外观,它们只是让我们绕过了SwiftUI在父视图中只包含10个子视图的限制——在本例中,文本视图在一个Form中。

如果希望表单在将其项拆分为块时看起来不同,则应改用Section视图。这会将表单拆分为不同的可视组,就像设置应用程序所做的那样:

Form {
    Section {
        Text("Hello World")
    }

    Section {
        Text("Hello World")
        Text("Hello World")
    }
}

当您应该将表单拆分为多个部分时,并没有什么硬性规定—它只是用来对相关项进行可视化分组。

译自Creating a form

Previous: 了解SwiftUI APP的基本结构 Hacking with iOS: SwiftUI Edition Next: 添加导航栏

赏我一个赞吧~~~

你可能感兴趣的:(SwiftUI:创建表单)