iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Mobile Development

用 SwiftUI 魔法變出 Leetcode 刷題知識學習 App!系列 第 8

Day 8: SwiftUI 顯示 LeetCode 題目列表,使用 List 和 NavigationLink

  • 分享至 

  • xImage
  •  

今天可以說是正式踏入 LeetCode 的門口了,要開始製作 LeetCode 的題目列表,而 LeetCode 有上千題,要全部做完其實太費工且不切實際,本文選題會選擇比較基礎且友善的題目作為列表,以鞏固地基為目標去實踐

列表呈現的資料會以基本常見的 LeetCode 演算法知識為主,而點擊列表則會進入內頁解說演算法以及題目解說,這是此次 App 內容初步設計的 MVP 產品 (MVP 意思是最小可行產品)

首先先定義列表要顯示的資料物件,以及 ID 編號,而 Identifiable 就是 protocol,它就是要求要有一個唯一識別的 ID ,title 則是表示 LeetCode 題目標題

struct LeetCodeProblem: Identifiable {
    var id: Int
    var title: String
}

於是我們新增一個陣列去存放 LeetCode 題目

let leetCodeProblems = [
    LeetCodeProblem(id: 1, title: "Two Sum"),
    LeetCodeProblem(id: 2, title: "Add Two Numbers"),
    LeetCodeProblem(id: 3, title: "Longest Substring Without Repeating Characters"),
    // 添加更多題目...
]

再來是建立 List 呈現列表的樣子,利用 NavigationLink 我們可以轉導新的頁面,利用 NavigationView 搭配 .navigationBarTitle("LeetCode Problems") 增加了列表標題,更豐富了這一頁的主題顯示

struct ContentView: View {
    var body: some View {
        NavigationView {
            List(leetCodeProblems) { problem in
                NavigationLink(destination: Text(problem.title)) {
                    Text(problem.title)
                }
            }
            .navigationBarTitle("LeetCode Problems")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

這樣最小的 LeetCode 題目列表 App 就出來了!非常簡短,對比非宣告式 UI 的寫法,真的是大大精簡了不少程式碼,為工程師省下更多時間

總結

於是我們今天學會 SwiftUI 列表怎麼製作,且能夠呈現我們想要的 LeetCode 題目以及對應演算法主題,這樣更能讓我們複習題目時更有方向重點加強

更多可繼續參考官方文件說明,其實文件內含圖文教學,可以說是非常用心在推廣 SwiftUI,大家有興趣都可以看看


上一篇
Day 7: 學習如何使用 SwiftUI 的 Stack 來進行布局
下一篇
Day 9: 串接 LeetCode 題目 API,顯示在 SwiftUI 的 List 上
系列文
用 SwiftUI 魔法變出 Leetcode 刷題知識學習 App!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言