[Video Summary] Ch. 5.3: Sheets, Lists, and Building the To Do List User Interface
Mô tả nhanh
Video này hướng dẫn cách xây dựng giao diện người dùng (UI) cho ứng dụng To Do List, tập trung vào việc sử dụng Toolbars, Sheets, và Full Screen Covers trong SwiftUI.
Video
Mô tả chi tiết
Video này hướng dẫn cách xây dựng giao diện người dùng (UI) cho ứng dụng To Do List, tập trung vào việc sử dụng Toolbars, Sheets, và Full Screen Covers trong SwiftUI.
- Tùy chỉnh giao diện danh sách (List View):
- Tăng kích thước font chữ của các mục trong danh sách bằng modifier
.font(.title2)
. - Tạo giao diện chi tiết (Detail View) mới để hiển thị thông tin chi tiết cho từng mục.
- Tăng kích thước font chữ của các mục trong danh sách bằng modifier
- Xây dựng giao diện chi tiết (Detail View):
- Sử dụng
List
để tổ chức các thành phần giao diện. - Thêm
TextField
để nhập nội dung công việc, sử dụng@State
để quản lý giá trị nhập liệu (cần có biến@State
để lưu trữ giá trị nhập của field này, khác vớiText
view chỉ dùng để hiển thị).- Biến
@State
không đểprivate
để có thể truy cập từ file khác.
- Biến
- Thêm các modifier để cải thiện giao diện như
.font(.title)
và.textFieldStyle(.roundedBorder)
. - Sử dụng
.listStyle(.plain)
để loại bỏ viền và nền xám mặc định của list. - Thêm
Toggle
để bật/tắt reminder và@State private var
tương ứng. - Thêm
DatePicker
để chọn ngày, giờ và@State private var
cho ngày giờ.- Có thể dùng
calendar.current.date(byAdding: .day, value: 1, to: Date.now)
để thêm 1 ngày từ ngày hiện tại. - Dùng modifier
.disabled
kết hợp với giá trị biến của toggle set reminder để ẩn/hiện date picker.
- Có thể dùng
- Thêm
Text
label "Notes",TextField
để nhập note và@State private var
cho note.- Modifier
.axis(.vertical)
cho phép textfield cao lên khi vượt quá số dòng hiển thị.
- Modifier
- Thêm
Toggle
để đánh dấu hoàn thành và@State private var
tương ứng. - Thêm modifier
.padding(.vertical)
vàoTextField
và.padding(.top)
choToggle
để có khoảng cách giữa các thành phần. - Sử dụng
.listRowSeparator(.hidden)
để ẩn đường kẻ phân tách giữa các row của list view.
- Sử dụng
- Thêm Toolbar:
- Thêm modifier
.toolbar
vàoList
view, nhớ trongNavigationStack
để có toolbar. - Bên trong
.toolbar
, thêmToolbarItem
vàButton
với title "Cancel" (bên trái). - Thêm
ToolbarItem
vàButton
thứ 2 với title "Save" (bên phải). - Sử dụng biến môi trường
@Environment(\.dismiss)
cho button cancel để đóng màn hình. - Nhúng
DetailView
trongNavigationView
ở phần preview để hiển thị toolbar. - Dùng modifier
.navigationBarBackButtonHidden(true)
ở list view để ẩn nút back mặc định.
- Thêm modifier
- Thêm nút "+" để tạo mới to-do:
- Thêm
ToolbarItem
vớiButton
vàoTodoList
view để tạo nút "+". - Dùng
Image(systemName: "plus")
để tạo hình icon.
- Thêm
- Sử dụng Sheet và Full Screen Cover:
- Để view mới xuất hiện dạng sheet nhỏ và trượt lên từ dưới, dùng modifier
.sheet(isPresented: $sheetIsPresented) { DetailView(toDo: "") }
bên trongNavigationStack
củaListView
. - Thay vì sử dụng
NavigationLink
, dùng modifier.sheet
để hiện view mới. - Để view mới full màn hình hoặc không cần phần navigation bar, thay thế bằng
.fullScreenCover(isPresented: $sheetIsPresented) { DetailView(toDo: "") }
- Chú ý nhúng
DetailView
trongNavigationView
ở phần closure sheet hoặc fullScreenCover để hiển thị toolbar. - Khi bấm nút "+", toggle giá trị biến
sheetIsPresented
để gọi tới việc show sheet hoặc fullScreenCover.
- Để view mới xuất hiện dạng sheet nhỏ và trượt lên từ dưới, dùng modifier
Video cũng đề cập đến việc sử dụng biến @State
để giữ dữ liệu và cách truyền dữ liệu giữa các view khác nhau. Ngoài ra, video cũng có một thử thách nhỏ để người xem thực hành.
<Lời chúc>
Mong rằng bạn sẽ áp dụng thành công các kiến thức trong video này vào dự án của mình. Chúc bạn luôn học tập hiệu quả và có những sản phẩm chất lượng!