SwiftUI在每个父级内部最多允许10个子级视图

如果要添加更多内容,则应将视图放入组中。Group{}

使用SwiftUI中的选择器视图创建分段控件

当我们在.pickerStyle(SegmentedPickerStyle())修改器上应用修改器时,它们会采用分段样式。

keyboardType()让我们改变在文本字段获得焦点时显示的键盘

有很多选项可供选择,包括数字键盘,十进制键盘等等。
.numberPad 数字键盘
.decimalPad 带小数点的数字键盘

挑战

将昨天的代码进行完善,挑战题目如下:

最好的学习方法之一是尽可能多地编写自己的代码,因此,你应该尝试以下三种方式扩展此应用程序,以确保你完全了解正在发生的事情:

  • 在第三部分添加标题,即“每人的金额”
  • 添加另一部分以显示支票的总金额,即原始金额加上小费值,而不用人数来划分。
  • 将“人数”选择器更改为文本字段,确保使用正确的键盘类型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
// ContentView.swift
// WeSplit
//
// Created by 张洪 on 2020/1/16.
// Copyright © 2020 张洪. All rights reserved.
//

import SwiftUI

struct ContentView: View {
@State private var checkAmount = ""
@State private var numberOfPeopleString = ""
@State private var numberOfPeople = 2
@State private var tipPercentage = 2
let tipPercentages = [10, 15, 20, 25, 0]

var sumMoney: Double {

let tipSelection = Double(tipPercentages[tipPercentage])
let orderAmount = Double(checkAmount) ?? 0

let tag1 = orderAmount * tipSelection / 100
let tag2 = tag1 + orderAmount

return tag2
}

var totalPerPerson: Double {
let tag2 = sumMoney
let peopleCount = Double(numberOfPeopleString) ?? 0

let tag3 = tag2 / peopleCount

return tag3
}

var body: some View {
NavigationView {
Form {
Section {
Text("Hello World")
TextField("Amount", text: $checkAmount)
.keyboardType(.decimalPad)
}

Section (header: Text("Number of people")){
TextField("Fill in the number of people", text: $numberOfPeopleString)
.keyboardType(.numberPad)
}


Section(header: Text("How much tip do you want to leave?")) {

Picker("Tip Percentage", selection: $tipPercentage) {
ForEach(0 ..< tipPercentages.count) {
Text("\(self.tipPercentages[$0])")
}

}.pickerStyle(SegmentedPickerStyle())
}

Section(header: Text("Total amount of money")) {
Text("$\(sumMoney, specifier: "%.2f")")
}

Section(header: Text("Amount per person")) {
Text("$\(totalPerPerson, specifier: "%.2f")")

}

}
.navigationBarTitle("WeSplit")
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

参考资料

查看下一天的SwiftUI学习笔记

关于100days英文课程