[Video Summary] Ch 1 17 Toggle, Sound Off + Compound Conditionals in SwiftUI (2025)
Mô tả nhanh
Video này trình bày về cách sử dụng toggle view (nút bật tắt) để kiểm soát âm thanh trong ứng dụng iOS/macOS, giới thiệu về binding (ràng buộc) trong SwiftUI, xử lý các trường hợp có thể gây crash ứng dụng và cách sử dụng compound conditionals (điều kiện phức hợp) với toán tử AND (&&) và OR (||).
Video
Mô tả chi tiết
Video này hướng dẫn cách sử dụng Toggle
view để bật/tắt âm thanh trong ứng dụng SwiftUI. Đồng thời, video cũng giới thiệu về Binding
, một khái niệm quan trọng trong SwiftUI, và cách xử lý các edge case (trường hợp đặc biệt) có thể gây crash ứng dụng. Video cũng hướng dẫn sử dụng compound conditionals
(điều kiện phức hợp) để kiểm soát luồng thực thi của chương trình.
Các bước thực hiện chính trong video:
-
Thêm Toggle View:
- Nhúng button vào
HStack
. - Thêm
Toggle
view vớititle
là "Sound on:" và mộtis on
boolean variable mới - Sử dụng
@State private var soundIsOn = true
để quản lý trạng thái của toggle. - Giải thích về binding (cần thêm dấu
$
phía trước biến để tạo liên kết 2 chiều)
- Nhúng button vào
-
Tùy chỉnh giao diện Toggle:
- Thêm
Spacer
giữa toggle và button. - Sử dụng
.border()
để xem kích thước của toggle. - Sử dụng
.labelIsHidden()
để ẩn label mặc định của toggle - Thêm một
Text
view trước toggle để đóng vai trò là label.
- Thêm
-
Tắt âm thanh khi toggle ở trạng thái off:
- Trong action của button, thêm
if soundIsOn
để kiểm tra biến trạng thái trước khi gọiplaySound()
. - Sử dụng modifier
.onChange(of: soundIsOn)
để thực thi code khi trạng thái toggle thay đổi.
- Trong action của button, thêm
-
Ngăn chặn việc phát nhiều âm thanh cùng lúc:
- Thêm điều kiện kiểm tra
audioPlayer.isPlaying
trongonChange
để dừng âm thanh nếu nó đang phát.
- Thêm điều kiện kiểm tra
-
Xử lý Edge Case:
- Giải thích về
edge case
(trường hợp đặc biệt) có thể gây crash app (khi tắt âm thanh ngay sau khi bật app). - Sử dụng simulator để xem lỗi chi tiết hơn khi app crash.
- Giải thích lý do lỗi:
audioPlayer
lànil
nếu chưa gọiplaySound()
. - Sử dụng nested
if statement
để kiểm traaudioPlayer
khácnil
trước khi thực hiện các thao tác trên nó. - Giới thiệu về variable pane trong debug để kiểm tra giá trị của các biến tại thời điểm crash.
- Giải thích về
-
Compound Conditionals:
- Giải thích về
compound conditionals
(điều kiện phức hợp) với toán tử&&
(AND) và||
(OR). - Sử dụng
if audioPlayer != nil && audioPlayer.isPlaying
để thay thế nestedif statement
- Giải thích về
-
Mini Challenge:
- Thực hiện dừng âm thanh trong hàm
playSound()
nếu đang phát. - Giải quyết vấn đề play nhiều âm thanh chồng lên nhau khi click button quá nhanh
- Thực hiện dừng âm thanh trong hàm
Video hướng dẫn chi tiết cách thêm và tùy chỉnh `Toggle` view, sử dụng `Binding`, xử lý edge case, và dùng `compound conditionals`. Cung cấp kiến thức quan trọng để xây dựng ứng dụng iOS/macOS với SwiftUI.
Chúc bạn có những giây phút học tập hiệu quả!