[Video Summary] Ch. 6.10 Searchable - adding a Pokemon-searching Search Bar to our SwiftUI Catch 'em All App (2024)
Mô tả nhanh
Video này hướng dẫn cách thêm thanh tìm kiếm vào ứng dụng "Catch 'em All" sử dụng SwiftUI, cùng với việc cải tiến code bằng cách tạo một method để xử lý việc tải dữ liệu trang, và cuối cùng là hiển thị lại số thứ tự của Pokemon trong danh sách.
Video
Mô tả chi tiết
Video này trình bày cách thêm thanh tìm kiếm vào ứng dụng "Catch 'em All", cải tiến code và hiển thị số thứ tự Pokemon.
Các bước thực hiện chính:
- Thêm Search Bar:
- Sử dụng modifier
.searchable(text:)
vàoList
. - Tạo biến
@State private var searchText = ""
để lưu trữ text người dùng nhập. - Gán biến
searchText
vào modifier.searchable(text: $searchText)
.
- Sử dụng modifier
- Tách Code Load Dữ Liệu:
- Chuyển code trong
task
modifier củaList
vào methodloadNextIfNeeded(creature:)
trong classCreatures
. - Thêm tham số
creature
vào functionloadNextIfNeeded(creature:)
. - Thay thế
creatures.
bằng các thuộc tính của classCreatures
trong method. - Sử dụng
id
thay vìname
để so sánh các đối tượng. - Thêm từ khóa
async
cho functionloadNextIfNeeded(creature:)
- Gọi method
loadNextIfNeeded(creature:)
trongtask
modifier củaList
, kèm theo từ khóaawait
.
- Chuyển code trong
- Tạo Computed Property Cho Tìm Kiếm:
- Tạo computed property
searchResults
kiểu[Creature]
. - Trong
searchResults
:- Nếu
searchText
rỗng, trả về toàn bộcreatures
array.
- Nếu
- Ngược lại, sử dụng
filter
để lọc các phần tử trong creatures array cóname
chứasearchText
(sau khi đãcapitalized
). - Thay thế
creatures.creaturesArray
bằngsearchResults
trongList
.
- Tạo computed property
- Hiển Thị Index của Pokemon:
- Tạo function
returnIndex(of creature: Creature) -> Int
để trả về index của Pokemon trong array. - Trong
returnIndex(of:)
:- Sử dụng
firstIndex(where:)
để tìm index của một creature. - Trả về
0
nếu không tìm thấy.
- Sử dụng
- Trong
label
củaList
, thêm string interpolation để hiển thị index:"\(returnIndex(of: creature)). \(creature.name.capitalized)"
- Tạo function
Chúc bạn học tập tốt!