[Video Summary] Ch 1.21 SwiftUI Two Way Bindings for @State using $ (You Are Awesome app)
Mô tả nhanh
Video này trình bày về two-way binding trong SwiftUI bằng cách sử dụng ký tự $ trước các biến @State. Chúng ta sẽ thực hành khái niệm này qua việc sử dụng các control như TextField, Toggle, ColorPicker, DatePicker và Stepper.
Video
Mô tả chi tiết
Video này trình bày về two-way binding trong SwiftUI bằng cách sử dụng ký tự $ trước các biến @State. Chúng ta sẽ thực hành khái niệm này qua việc sử dụng các control như TextField, Toggle, ColorPicker, DatePicker và Stepper.
Các bước thực hiện:
- Tạo Project Mới:
- Tạo một project Xcode mới tên là "Two-Way Bindings".
- Giao diện ban đầu gồm một
VStack
chứaText
vàImage
.
- Thêm Button Counter:
- Xóa
Image
. - Tạo biến
@State private var pressCount = 0
để đếm số lần nhấn nút. - Hiển thị
pressCount
trongText
view. - Tạo
Button
để tăngpressCount
mỗi khi nhấn (sử dụng actionpressCount += 1
). - Thay đổi style và font cho
Button
.
- Xóa
- Giải thích về @State:
- Các biến trong struct sẽ bị hủy khi view vẽ lại, nhưng
@State
lưu biến ở một vùng nhớ đặc biệt. - Khi một biến
@State
thay đổi, view sẽ được vẽ lại với giá trị mới. @State
là một property wrapper, và khi sử dụng, ta có thể đọc hoặc viết biến bằng cách gọi trực tiếp tên biến đó.
- Các biến trong struct sẽ bị hủy khi view vẽ lại, nhưng
- Two-Way Binding:
- Một số view vừa đọc vừa ghi vào biến (ví dụ: các control).
- Sử dụng
$
trước tên biến khi cần two-way binding. - Xcode sẽ gợi ý và tự sửa lỗi nếu bạn quên
$
khi cần thiết cho binding parameter.
- Sử dụng Toggle:
- Thêm
Toggle
component. - Tạo biến
@State private var toggleIsOn = true
để lưu trạng thái của toggle. - Sử dụng
$toggleIsOn
cho parameterisOn
trong Toggle để tạo two-way binding (đọc và ghi). - Hiển thị text 'on'/'off' bên cạnh toggle dựa vào trạng thái của biến toggleIsOn
- Thêm padding cho
VStack
.
- Thêm
- Sử dụng TextField:
- Thêm
Spacer
để khoảng cách các view. - Thêm
TextField
, placeholder là "Enter a name". - Tạo biến
@State private var name = ""
để lưu giá trị nhập vào. - Sử dụng
$name
cho parameter text củaTextField
. - Hiển thị nội dung
name
vừa nhập bằngText
view. - Thêm modifier
textFieldStyle(.roundedBorder)
choTextField
.
- Thêm
- Sử dụng ColorPicker:
- Thêm
Spacer
. - Thêm
ColorPicker
với title "Pick a color". - Tạo biến
@State private var selectedColor: Color = .red
. - Sử dụng
$selectedColor
cho parameter selection củaColorPicker
. - Thêm một
Rectangle
bên trên, fill màu bởiselectedColor
và thiết lập kích thước. - Sử dụng Group để nhóm nhiều view lại để tránh lỗi quá 10 subview.
- Thêm
- Sử dụng DatePicker:
- Thêm
Spacer
. - Thêm
DatePicker
với title "Date:" - Tạo biến
@State private var selectedDate: Date = Date()
để lưu giá trị ngày tháng - Sử dụng
$selectedDate
cho parameter selection củaDatePicker
. - Thêm
Text
view để hiển thị giá trị củaselectedDate
. - Sử dụng
dot formatted
để format lại ngày tháng hiển thị.
- Thêm
- Sử dụng Stepper:
- Thêm
Spacer
. - Thêm
Stepper
với title "Stepper Value: [giá trị]" và range từ 1 đến 10. - Tạo biến
@State private var stepperValue = 1
. - Sử dụng
$stepperValue
cho parameter value củaStepper
.
- Thêm
Chúc bạn có một buổi học hiệu quả!