Swift Academy · Pelajaran

Corak Coordinator

Pusatkan logik aliran navigasi.

Pelajaran 3 daripada 413 langkah

Corak Coordinator ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.

Masalah Navigasi

Apabila paparan melakukan push dan memaparkan paparan lain secara terus, logik navigasi menjadi tersebar di seluruh aplikasi. Setiap skrin perlu mengetahui skrin seterusnya, lalu mewujudkan gandingan yang erat.

Corak penyelaras menyelesaikan masalah ini dengan mengasingkan navigasi ke dalam objek khusus.

Apakah Penyelaras

Penyelaras ialah objek yang tugas tunggalnya adalah mengurus aliran navigasi. Ia menentukan skrin seterusnya dan mencipta pengawal paparan atau paparan untuk ditunjukkan.

Paparan tidak lagi perlu memahami penghalaan — paparan hanya memberi isyarat tentang peristiwa, kemudian penyelaras menentukan tindakan yang perlu diambil.

Protokol Penyelaras

Kebanyakan pelaksanaan bermula dengan protokol kecil yang dipatuhi oleh setiap penyelaras.

protocol Coordinator: AnyObject {
    var childCoordinators: [Coordinator] { get set }
    func start()
}

Penyelaras Konkrit

Penyelaras konkrit memiliki pengawal navigasi dan membina skrin pertama dalam start().

final class AppCoordinator: Coordinator {
    var childCoordinators: [Coordinator] = []
    let navigationController: UINavigationController

    init(navigationController: UINavigationController) {
        self.navigationController = navigationController
    }

    func start() {
        let vc = HomeViewController()
        navigationController.setViewControllers([vc], animated: false)
    }
}

Mengasingkan Paparan daripada Penghalaan

Manfaat utamanya: paparan tidak lagi mencipta skrin seterusnya. Sebaliknya, paparan memberitahu penyelarasnya bahawa sesuatu peristiwa telah berlaku, kemudian penyelaras menghalakan navigasi.

Ini bermakna sesuatu skrin boleh digunakan semula dalam aliran yang berbeza tanpa mengubah kodnya.

Memberi Isyarat Peristiwa ke Atas

Paparan berkomunikasi dengan penyelarasnya melalui delegate atau penutupan. Paparan tidak mengetahui ke mana ia akan pergi seterusnya.

protocol HomeViewControllerDelegate: AnyObject {
    func homeDidSelectProfile()
}

final class HomeViewController: UIViewController {
    weak var delegate: HomeViewControllerDelegate?

    func profileTapped() {
        delegate?.homeDidSelectProfile()
    }
}

Mengendalikan Route

Penyelaras mematuhi delegate dan menentukan cara navigasi apabila peristiwa dicetuskan.

extension AppCoordinator: HomeViewControllerDelegate {
    func homeDidSelectProfile() {
        let profile = ProfileViewController()
        navigationController.pushViewController(profile, animated: true)
    }
}

Penyelaras child

Aliran besar seperti orientasi awal dan pembayaran mempunyai penyelaras child masing-masing. Induk memulakan child dan mengekalkannya dalam childCoordinators supaya ia terus hidup.

func startOnboarding() {
    let child = OnboardingCoordinator(navigationController: navigationController)
    childCoordinators.append(child)
    child.start()
}

Mengelakkan Kebocoran Memori

Oleh sebab induk mengekalkan child, anda mesti mengalih keluar child apabila alirannya tamat; jika tidak, child akan mengalami kebocoran. Pendekatan biasa adalah menggunakan panggilan balik penamatan.

func childDidFinish(_ child: Coordinator) {
    childCoordinators.removeAll { $0 === child }
}

Penyelaras dengan SwiftUI

Dalam SwiftUI, penyelaras sering mengawal laluan NavigationStack. Penyelaras memiliki laluan yang boleh diperhatikan, dan paparan melakukan append laluan kepadanya.

final class Router: ObservableObject {
    @Published var path: [Route] = []

    func push(_ route: Route) {
        path.append(route)
    }
}

enum Route: Hashable { case profile, settings }

Ringkasan Manfaat

Corak penyelaras memberikan anda:

  • Paparan boleh guna semula yang tidak menetapkan navigasi secara tegar
  • Logik aliran berpusat yang mudah diubah
  • Penghalaan yang boleh diuji dan diasingkan daripada antara muka pengguna
  • Aliran yang boleh digubah melalui penyelaras child

Semakan Pantas

Uji pemahaman anda tentang penyelaras.

Ringkasan

Anda telah mempelajari corak penyelaras:

  • Penyelaras memiliki navigasi supaya paparan tidak bergantung pada penghalaan
  • Paparan memberi isyarat peristiwa ke atas melalui delegate atau penutupan
  • Penyelaras child memodelkan aliran yang tersendiri
  • Alih keluar child apabila aliran tamat untuk mengelakkan kebocoran

Apabila digabungkan dengan MVVM, penyelaras melengkapkan seni bina yang kemas dan boleh diuji.

Percuma untuk bermula

Pelajari Swift dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
122
Pelajaran
409

Soalan Lazim

Adakah pelajaran “Corak Coordinator” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “Corak Coordinator”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Corak Coordinator”?

Pusatkan logik aliran navigasi. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Corak Coordinator” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Corak MVVM
  2. Mengikat Model View pada View
  3. Corak Coordinator
  4. Menguji Model View
← Kembali ke Swift Academy