[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
VStackchứaTextvà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ị
pressCounttrongTextview. - Tạo
Buttonđể tăngpressCountmỗ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
@Statelưu biến ở một vùng nhớ đặc biệt. - Khi một biến
@Statethay đổi, view sẽ được vẽ lại với giá trị mới. @Statelà 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
Togglecomponent. - Tạo biến
@State private var toggleIsOn = trueđể lưu trạng thái của toggle. - Sử dụng
$toggleIsOncho parameterisOntrong 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
$namecho parameter text củaTextField. - Hiển thị nội dung
namevừa nhập bằngTextview. - Thêm modifier
textFieldStyle(.roundedBorder)choTextField.
- Thêm
- Sử dụng ColorPicker:
- Thêm
Spacer. - Thêm
ColorPickervới title "Pick a color". - Tạo biến
@State private var selectedColor: Color = .red. - Sử dụng
$selectedColorcho parameter selection củaColorPicker. - Thêm một
Rectanglebên trên, fill màu bởiselectedColorvà 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
DatePickervới title "Date:" - Tạo biến
@State private var selectedDate: Date = Date()để lưu giá trị ngày tháng - Sử dụng
$selectedDatecho parameter selection củaDatePicker. - Thêm
Textview để 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
Steppervới title "Stepper Value: [giá trị]" và range từ 1 đến 10. - Tạo biến
@State private var stepperValue = 1. - Sử dụng
$stepperValuecho parameter value củaStepper.
- Thêm
Chúc bạn có một buổi học hiệu quả!