[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

Click vào hình dưới để mở:

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:

  1. Thêm Toggle View:

    • Nhúng button vào HStack.
    • Thêm Toggle view với title là "Sound on:" và một is 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)
  2. 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.
  3. 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ọi playSound().
    • Sử dụng modifier .onChange(of: soundIsOn) để thực thi code khi trạng thái toggle thay đổi.
  4. 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 trong onChange để dừng âm thanh nếu nó đang phát.
  5. 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: audioPlayernil nếu chưa gọi playSound().
    • Sử dụng nested if statement để kiểm tra audioPlayer khác nil 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.
  6. 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ế nested if statement
  7. 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

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ả!