昨天我們學會了 TableView
這個強大的元件,但隨著 App 功能增加、檔案變多,我們的專案是不是開始變得像一個雜亂的房間?所有東西都堆在一起,想找個東西找不到,想加個新家具也沒空間。
在我們一頭栽進更複雜的功能前,今天必須先學會如何整理這個房間!我們將導入 iOS 開發中最基礎也最重要的架構模式:MVC(Model-View-Controller)。它就像一套聰明的收納系統,教我們如何將「資料」、「畫面」和「邏輯」分門別類地放好,讓專案變得井然有序、清爽宜人。
Model
、View
、Controller
的三大組成部分與各自的職責MVC(Model-View-Controller) 是 iOS 開發中最常見的專案架構,它能將專案分成三個部分:
Storyboard
、.xib
、自訂 UI 元件等),不直接處理邏輯。Model
與 View
,接收使用者操作、更新資料、刷新畫面。一句話概括:Model 管資料,View 負責美觀,Controller 當中間人。
模組 | 職責說明 | 範例檔案 |
---|---|---|
Model | 處理資料邏輯、API 解析、資料模型結構 | Weather.swift 、User.swift |
View | 呈現 UI,不包含邏輯,專注於畫面 | Main.storyboard 、CustomView.xib |
Controller | 負責溝通 Model 與 View,處理事件、控制流程 | ViewController.swift 、TableViewCell.swift |
TableViewCell.swift
雖然繼承自UIView
(屬於View
),但它內部常常包含「設定Cell
內容」的邏輯,角色類似Controller
,因此將它與ViewController
放在一起管理也很常見。
假設你的專案原本長這樣(全擠在一堆檔案裡):
MyApp
├── AppDelegate.swift
├── Assets.xcassets
├── Info.plist
├── LaunchScreen.storyboard
├── SceneDelegate.swift
├── MainTableViewCell.swift
├── MainTableViewCell.xib
├── MainViewController.swift
├── MainViewController.xib
我們要改成這樣:
MyApp
├── Model
│ // API 資料解析結構
│
├── View
│ // 主畫面
│ // 自訂 UI 元件
│
├── Controller
│ ├── MainViewController.swift
│ ├── MainViewController.xib
│ └── Cell
│ ├── MainTableViewCell.swift
│ └── MainTableViewCell.xib
│
├── AppDelegate.swift
└── SceneDelegate.swift
...
在左側的專案導覽器中,右鍵點擊最上層的藍色專案圖示或黃色的專案資料夾 → 選擇 New Group
。
重複這個動作,依序建立 Model
、View
和 Controller
三個群組。
你也可以在 Controller
群組上按右鍵,用同樣的方式為它建立一個 Cell
子群組。
依照 MVC 的職責劃分,理論上我們會這樣分類:
.swift
檔案。.storyboard
或自訂的 UIView .xib
檔。UIViewController
子類別的 .swift
檔案。不過,在實務上,為了方便管理,我們通常會將「功能相關」的檔案放在一起。 例如,MainViewController.swift
和它的介面檔 MainViewController.xib
幾乎總是一起修改。
因此,一個更常見且方便的整理方式是:
MyApp
├── Model
│ └── Message.swift // (假設我們為留言建立一個模型)
│
├── View
│ └── LaunchScreen.storyboard // (純 View 的檔案)
│
├── Controller
├── MainViewController.swift
└── MainViewController.xib // .xib 跟著 .swift 放在一起
以下是我們團隊的整理習慣,.xib
不一定全部放到 View,而是與對應的 .swift
放在一起,方便維護:
今天,我們完成了一次重要的「思維升級」,從單純寫程式,晉升到了思考程式架構的層次!
你不僅學會了 MVC(Model-View-Controller) 將資料、畫面與邏輯「各司其職」的核心概念,更掌握了在 Xcode 中建立資料夾、歸檔檔案的實務技巧。
從今天起,請養成這個專業習慣:為你的專案建立清晰的 MVC 架構。這不僅是為了現在的整潔,更是為了未來專案在擴充與維護時,能保有絕佳的彈性與效率。
架構整理完畢,是時候回到有趣的功能開發了!而且明天,我們的 App 將第一次連上網際網路,與真實世界的資料互動!
我們將學習如何使用滾筒式的 選取器(PickerView),讓使用者像設定鬧鐘一樣輕鬆地選擇日期。接著,最酷的部分來了:我們將會串接 NASA 的公開 API,根據使用者選擇的日期,即時抓取當天的「每日天文一圖」!
這將是你第一次結合 UI 操作與網路請求,打造一個能獲取動態、外部資料的 App。準備好探索宇宙了嗎?
敬請期待 《Day 24|Xcode 滾動選取:PickerView & NASA 實戰應用(第一天)》