Skip to content
Menu
CDhistory
CDhistory

Storyboardit, XIB:t ja koodi

Posted on 6 syyskuun, 2021 by admin
Resurssit

Lataa ilmainen kopio
The Missing Manual
for Swift Development

The Guide I Wish I Wish I had When I Started Out

Join 20,000+ Developers Learning About Swift Development

Lataa ilmainen kappaleesi

Kuvat-projektissa käytetään yksinomaan storyboardeja näkymäohjainten suunnitteluun ja luomiseen. Tässä jaksossa näytän, että koordinaattorimalli ei rajoitu storyboardeihin. Voit käyttää koordinaattorimallia myös, jos pidät XIB-tiedostoja storyboardien sijaan. Jos haluat käyttää kumpaakaan, sekin on mahdollista. Sillä ei ole väliä, miten suunnittelet ja luot projektisi näkymäohjaimet.

  • Starttiprojekti
  • Storyboardit
  • XIB:t
  • Code
  • Mitä seuraavaksi?

Starttiprojekti

Tämän jakson starttiprojekti on toiminnallisesti identtinen edellisen jakson valmiin projektin kanssa. On kuitenkin muutamia eroja, jotka haluan tuoda esiin. Luokka TermsViewController ei enää noudata Storyboardable-protokollaa, ja sillä on nyt kolme alaluokkaa, TermsViewControllerStoryboard, TermsViewControllerXIB ja TermsViewControllerCode.

Luokka TermsViewControllerStoryboard on identtinen edellisen jakson TermsViewController-luokan kanssa. TermsViewControllerStoryboard-luokan käyttöliittymä on määritelty kohdassa Main.storyboard. Voimme instansioida luokan instanssin kutsumalla Storyboardable-protokollan instantiate()-metodia.

Luokan TermsViewControllerXIB käyttöliittymä on määritelty kohdassa TermsViewControllerXIB.xib. TermsViewControllerXIB-luokka määrittelee staattisen, muuttuvan ominaisuuden nibName, jolla vältetään merkkijonokirjainten käyttö. Tämä on samanlainen kuin Storyboardable.swift-luokassa määritelty storyboardIdentifier-ominaisuus.

Kuten nimestä voi päätellä, TermsViewControllerCode-luokalla ei ole linkkiä storyboardiin tai XIB-tiedostoon. Käyttöliittymä luodaan koodissa. Tämä johtaa luonnollisesti melko paljon enemmän koodia. Tutustutaanpa kuhunkin näistä näkymäohjaimista ja tutkitaan, miten ne sopivat koordinaattorimalliin.

Storyboardit

Storyboardit ovat olleet olemassa jo useita vuosia, ja Apple kannustaa kehittäjiä käyttämään niitä. Käytän storyboardeja useimmissa projekteissa, joiden parissa työskentelen. Xcode luo automaattisesti storyboardin, kun luot upouuden projektin, mutta suosittelen vahvasti käyttämään useita pienempiä storyboardeja yhden suuren storyboardin sijaan. Käyttämällä useita pienempiä storyboardeja vältät helpommin yhdistämisristiriidat, ja työskentely pienemmillä storyboardeilla on nopeampaa ja yksinkertaisempaa.

Segut ovat storyboardien keskeinen ominaisuus, mutta en koskaan käytä niitä yhdessä koordinaattorikuvion kanssa. Vaikka seguja on mahdollista käyttää yhdessä koordinaattorikuvion kanssa, seguessa näkymäohjain osallistuu sovellusvirtaan, ja sitä haluamme välttää. Muista, että projektin koordinaattorit käsittelevät sovellusvirtaa. Näkymäohjaimen ei tarvitse tietää mitään sovellusvirrasta eikä sen tarvitse tietää muista näkymäohjaimista.

Jopa ilman seguja tarinakaavioilla on arvonsa. Jaan keskisuuret ja suuret projektit aina moduuleihin. Jokaisella moduulilla on storyboard, joka sisältää moduulin näkymäohjaimet.

Avaa TermsCoordinator.swift ja siirry showTerms()-metodiin. Toteutus on identtinen edellisen jakson valmiin projektin kanssa. Ainoa ero on näkymäohjainluokan nimi. Termikoordinaattori instantioi TermsViewControllerStoryboard-luokan TermsViewController-luokan sijaan.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerStoryboard.instantiate() // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

XIB:t

XIB-tiedostot ovat olleet olemassa Cocoa-kehityksen alkuajoista lähtien. Niistä puuttuu muutamia ominaisuuksia storyboardeihin verrattuna, mutta niillä on silti arvonsa. Käytän XIB-tiedostoja pääasiassa uudelleenkäytettäviin komponentteihin, kuten taulukkonäkymän soluihin ja kokoelmanäkymän soluihin.

Avaa termitViewControllerXIB.xib. TermsViewControllerXIB-luokan käyttöliittymä on identtinen Main.storyboardin TermsViewControllerStoryboard-luokan käyttöliittymän kanssa. Avaa TermsCoordinator.swift ja käy uudelleen läpi showTerms()-metodi. Luodaksemme TermsViewControllerXIB-luokan instanssin kutsumme init(nibName:bundle:)-initiaattoria, jolloin välitämme XIB-tiedoston nimen ja viittauksen XIB-tiedoston sisältävään nippuun.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerXIB(nibName: TermsViewControllerXIB.nibName, bundle: .main) // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

Code

Projektin näkymäohjainten käyttöliittymä on mahdollista luoda myös koodissa. Jos et pidä storyboardeista tai XIB-tiedostoista, tämä on ainoa vaihtoehtosi. En ole käyttänyt tätä vaihtoehtoa kovinkaan paljon storyboardien käyttöönoton jälkeen, mutta siitä voi olla hyötyä silloin tällöin.

Näkymäohjaimen luominen ja alustaminen koodissa on hyödyllistä, jos kyseisellä näkymäohjaimella on monimutkainen tai dynaaminen käyttöliittymä. Näkymäohjainten luomisella ja alustamisella koodissa on toinenkin pakottava hyöty. Se mahdollistaa initializer injectionin, eräänlaisen riippuvuusinjektion. Käsittelen riippuvuusinjektiota seuraavassa jaksossa.

Luoaksemme TermsViewControllerCode-luokan instanssin, kutsumme init()-initiaattoria. Tämä vastaa sitä, että kutsumme init(nibName:bundle:)-initiaattoria ja annamme molempina argumentteina nil.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerCode() // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

Mitä seuraavaksi?

Koordinaattorimalli on joustava malli. Sillä ei ole väliä, käytätkö storyboardeja, XIB-tiedostoja vai et kumpaakaan. Voit käyttää seguja, mutta muista, että silloin rikot koordinaattorikuvion perusperiaatetta. Näkymänohjaimen ei tarvitse tietää sovelluksen kulusta eikä sen pitäisi tietää muista näkymänohjaimista.

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Viimeisimmät artikkelit

  • Acela on palannut: NYC tai Boston 99 dollarilla
  • Temple Fork Outfitters
  • Burr (romaani)
  • Trek Madone SLR 9 Disc
  • Jokainen valmistunut 2016 NBA:n vapaa agenttisopimus yhdessä paikassa

Arkistot

  • helmikuu 2022
  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021
  • elokuu 2021
  • heinäkuu 2021
  • kesäkuu 2021
  • toukokuu 2021
  • huhtikuu 2021
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語
©2022 CDhistory | Powered by WordPress & Superb Themes