Exploring Tab Bar Controller

Exploring Tab Bar Controller
5
Del
to
Del

Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert å bare $ 3. Ikke gå glipp av.
Dette innlegget er en del av en serie som heter Lær iOS SDK Development Fra Scratch.Navigation kontrollere og View Controller HierarchiesData Persistens og Sandboxing på iOS

Mens navigasjonskontroller lar brukerne navigere hierarkisk innhold eller komplekse data ved administrerer en stabel med utsikt kontrollere, fanelinjen kontrollerne administrere en rekke visnings kontrollere som ikke nødvendigvis har et forhold til hverandre. I denne artikkelen vil vi utforske fanelinjen kontrollere i mer detalj ved å opprette et fanebasert program fra bunnen av.



Innledning

UITabBarController klasse er en annen UIViewController underklasse. Mens navigasjonskontrollere administrere en stabel av relaterte vise kontrollere, fanelinjen kontrollerne administrere en rekke visningskontrollere som ikke har noen eksplisitt sammenheng med hverandre.

klokken og musikkprogrammer på iOS er to gode eksempler på fanelinjen kontrollere . Akkurat som alle andre UIViewController underklasse, forvalter en fanelinjen kontrolleren en UIView eksempel

Visning av en fanelinjen kontrolleren er sammensatt av to subviews.

  • fanelinjen nederst av den oppfatning

    visningen av en av de vise kontrollerne fanelinjen kontrolleren styrer


    før vi begynner

    Det er et par ting å være oppmerksom på når du arbeider med fanelinjen kontrollere. Selv om tilfeller av UITabBar kan bare vise fem faner, kan UITabBarController klassen klarer flere view kontrollere. Når en fanelinjen kontrolleren styrer mer enn fem view kontrollere, er fanelinjen siste kategorien tittelen More.

    Du får tilgang til flere view kontrollerne via denne kategorien, og det er også mulig å redigere posisjonen av kategoriene i fanelinjen.

    Selv om fanelinjen kontrollere administrere en visning, søknaden er ikke ment å direkte samhandle med en fanelinjen kontrollerens syn.

    Hvis du bestemmer deg for at en fanelinjen kontrolleren er riktig Valget for et program, er fanelinjen kontrolleren som kreves for å være roten utsikt controller i programvinduet. Med andre ord, er roten visning av programvinduet alltid fanelinjen kontrolleren syn. En fanelinjen kontrolleren bør aldri være installert som et barn av et annet syn kontrolleren. Dette er en av de viktigste forskjellene med navigasjonskontrollere.



    Tabbed Bibliotek

    I denne artikkelen gjengir vi Biblioteket programmet som vi bygde i forrige artikkel. Ved å gjøre dette, kan vi bruke flere klasser og få fart raskere. I tillegg vil den vise deg at navigasjonskontrollere og fanelinjen kontrollerne er ganske forskjellige, og at de blir brukt i ulike situasjoner og bruke saker.

    program som vi vil bygge i denne leksjonen vil bli oppkalt Tabbed Bibliotek og vil være basert på den UITabBarController klasse. Mens vi bygger fanebasert Bibliotek søknaden, vil du legge merke til at bruk av en fanelinjen controller tvinger programmet i en svært spesiell brukergrensesnitt paradigmet som gjør det mulig for liten fleksibilitet. Tab bar kontrollerne er utrolig nyttig, men du må godta at de legger begrensninger på programmets brukergrensesnitt til en viss grad

    Åpne Xcode, opprette et nytt prosjekt ( Fil >. Nytt > Project. ..
    ), og velg Empty Application mal.

    Navn prosjektet fanebasert Bibliotek, tildele en organisasjon navn og firma-ID, og ​​satt enheter til iPhone. Fortell Xcode hvor du vil lagre prosjektet og traff Opprett.

    Selv om Xcode inneholder et fanebasert Application mal, foretrekker jeg å starte med en tom søknad mal slik at du forstår hvordan de ulike bitene i puslespillet passer sammen. Du vil merke at fanelinjen kontrollere er ikke så komplisert.



    Ta en Head Start

    Når fanebasert Bibliotek søknaden er ferdig, fanelinjen kontrolleren av søknaden vil administrere seks view kontrollere. I stedet for å lage hver visning controller klasse fra bunnen av, vi kommer til å jukse litt ved å gjenbruke de View Controller klasser som vi opprettet i forrige artikkel.

    I tillegg vil vi skape flere forekomster av samme view controller klassen for å spare oss litt tid. Målet med denne artikkelen er ikke å skape en haug med utsikt kontrolleren klasser. På dette punktet, bør du være ganske kjent med hvordan det fungerer.

    Last ned kildekoden fra forrige artikkel og åpne Xcode prosjekt som er inkludert i kildefilene i et nytt Finder-vindu. Finn de TSPAuthorsViewController, TSPBooksViewController, og TSPBookCoverViewController klasser og dra dem til det nye prosjektet. Sørg for å kopiere filene inn i det nye prosjektet ved å sjekke avmerkingsboksen Kopier elementer til bestemmelses gruppens mappe (om nødvendig) og ikke glem å legge til filene i fanebasert Library målet.

    I tillegg til disse tre klasser, trenger vi også å kopiere mappen av ressurser, som inneholder Books.plist og bildefiler, inn i vårt nye prosjekt. Dra mappen som heter Resources inn i vårt prosjekt og bruke de samme innstillingene som vi pleide å kopiere klassen filene. Vi er nå klar på å bruke programmets fanelinjen kontrolleren og fylle den med sin første visning kontrolleren.



    Legge til en Tab Bar Controller

    Legge til en fanelinjen kontrolleren er lett. Åpne prosjektets hovedstoryboard, Main.storyboard
    . Vent et minutt. Hvor er min storyboard? Fordi vi har valgt for Tøm Application
    mal, gjorde Xcode ikke gi oss et storyboard

    Legge til en dreiebok

    Velg New >.; Fil ...
    fra Fil
    menyen og velg Storyboard
    fra iOS brukergrensesnitt
    kategori til venstre.

    Sett < b> Enhets Slektstre til iPhone Hotell og navngi dreieboken Hoved

    . Det er ikke nødvendig å legge til .storyboard
    forlengelse. Xcode vil legge det for deg.

    Vi må også fortelle Xcode at det er behov for å bruke Main.storyboard
    som hovedgrensesnittet i programmet. Velg prosjektet i Prosjekt Navigator
    , velg Tabbed Library
    målet fra listen over mål, og sette Hoved Interface
    til Hoved
    eller . Main.storyboard

    Før vi begynner å arbeide med dreieboken, må vi oppdatere gjeldende gjennomføringen av programmet: didFinishLaunchingWithOptions: i
    TSPAppDelegate klasse. Åpne TSPAppDelegate.m Hotell og oppdatere gjennomføringen som vist nedenfor Anmeldelser - (BOOL) program: (UIApplication *) søknad didFinishLaunchingWithOptions:. (NSDictionary *) launchOptions {return JA;}

    Du kan opprette iOS-applikasjoner uten storyboards, men det betyr at du må eksplisitt instantiate vinduet i din søknad, som er det du så i gjennomføringen av programmet: didFinishLaunchingWithOptions :. Når du arbeider med storyboards, men du bare returnere JA og dreieboken gjør resten.

    Legge til en Tab Bar Controller

    Åpne Main.storyboard Hotell og dra en
    UITabBarController eksempel fra Object Library
    til høyre. Som standard leveres fanelinjen kontroller med to view kontrollere. Men jeg ønsker å illustrere hvordan du kan legge vise kontrollerne til fanelinjen kontrolleren manuelt så velger du visningen kontrollerne-ikke fanelinjen kontrolleren-og slette dem fra dreieboken.

    Hvis du kjører programmet i iOS Simulator, bør en fanelinjen nederst og en svart bakgrunn deg. Dette kan virke uviktig, men det viser hvor fanelinjen kontrolleren fungerer. Fanelinjen kontrolleren styrer en rekke visningskontrollere, ligner på hvordan en navigeringskontrollen styrer en bunke med utsikt kontrollerne.

    Det vi trenger å gjøre er å legge til et par vise kontrollerne til dreieboken og legge dem til viewControllers Eiendommen på fanelinjen kontrolleren. La oss se hvordan dette fungerer.

    Legge Se Controllers

    Dra et UITableViewController eksempel fra Object Library
    til arbeidsområdet og sette sin klasse TSPAuthorsViewController i Identity Inspektør
    . Velg visningen kontrolleren bord utsikt og angi antall Prototype Cells
    til 0 i Egenskaper Inspector
    som vi gjorde i forrige tutorial.

    Hvis du vil legge forfatterne vise kontrolleren til fanelinjen kontrollerens utvalg av visningskontrollere, drar du fra fanelinjen kontrolleren til forfatterne vise controller mens du holder Ctrl-tasten. Velg view kontrollere Z -
    under Sivil Overgang
    kategori fra menyen som vises

    En fanelinjen kontroller med en fane er det ikke. at nyttig så la oss legge til en annen visning kontrolleren til mix. Dra et annet UITableViewController eksempel fra Object Library
    , setter sin klasse til
    TSPBooksViewController, og angi antall Prototype Cells
    til 0. Lag forholdet naturlig overgang som vi gjorde for forfatterne vise kontrolleren.

    Legg til en UIViewController eksempel til arbeidsområdet og sette sin klasse TSPBookCoverViewController i Identity Inspector
    . Legg en UIImageView eksempel til visningen kontrolleren, slik vi gjorde i den forrige artikkelen, og koble den med bookCoverView utløpet av visningen kontrolleren. Lag forholdet naturlig overgang med fanelinjen kontrolleren som vi gjorde for tabellvisningen kontrollerne.

    Du kan bare opprette segues når arbeidsområdet ikke er zoomet ut, noe som kan være et problem til tider. Men du kan også opprette tilkoblinger, for eksempel segues, i navigatoren til venstre. Dette er ofte mye lettere og mindre klumpete.

    Bygg og kjøre programmet. På dette punktet, inneholder fanelinjen tre kategoriene. Tappe en fane viser utsikten kontroller knyttet til kategorien.

    Har du prøvd å trykke på navnet på en forfatter i forfatterne vise kontrolleren? Og hvorfor er de bøkene vise kontrolleren viser oss en tom tabellvisning? Det er tid for litt feilsøking.

    Festing Forfattere View Controller

    Når du klikker på en forfatters navn i forfatterne vise kontrolleren, programmet krasjer. Det første du bør gjøre når du står overfor en krasj inspiserer Xcode konsoll. Dette er hva det forteller meg:
    2014-03-27 12: 42: 07,964 Tabbed Library [1943: 60b] *** Avslutte app grunn uoppfanget unntak 'NSInvalidArgumentException', grunn: 'mottaker (< TSPAuthorsViewController: 0x8ca22e0 >) har ingen naturlig overgang med identifikator 'BooksViewController' '

    Meldingen om at Xcode viser i konsollen er ikke vanskelig å tyde. Vi forteller visningen kontrolleren til å utføre en naturlig overgang med identifikator BooksViewController, men som naturlig overgang finnes ikke. Resultatet er en krasj.

    Denne feilen er lett å fikse ved å bygge forfatterne vise kontrolleren i et navigeringskontrollen, og skaper en naturlig overgang til en forekomst av TSPBooksViewController klassen, og navngi naturlig overgang BooksViewController. Jeg la det opp til deg som en oppgave siden vi allerede gjorde dette i den forrige artikkelen.

    Jo mer viktig tema i dette eksempelet er å forstå at de tre vise kontrollerne som er knyttet til fanelinjen kontrolleren ikke kommuniserer med hverandre. Ideen bak en fanelinjen kontroller og en navigeringskontrolleren er svært forskjellig. En navigasjonskontroller opprettholder en rekke visningskontrollere, navigasjons stabelen. Visningen kontrollere i navigasjons stabelen har en implisitt sammenheng med hverandre i den forstand at de er en del av det samme navigasjons stabelen.

    En fanelinjen kontrolleren styrer også en rekke visnings kontrollere, men utsikten kontrollerne don 't vet om hverandre. De kan ikke kommunisere med hverandre gjennom fanelinjen kontrolleren. I forrige artikkel, passerte vi data fra forfatterne vise kontrolleren til bøkene vise kontrolleren når en forfatter som avlyttet. Dette mønsteret er ikke aktuelt i en fane bar kontrolleren. Selvfølgelig kunne vi implementere en løsning for å vise brukeren bøkene vise kontrolleren når en forfatter er tappet i forfatterne vise kontrolleren, men det er viktig at du forstår at det er ikke målet om en fanelinjen kontrolleren.
    < p> klokken og musikkprogrammer på iOS er gode eksempler på hvordan en fanelinjen kontrolleren skal brukes. Visningen kontrollere som fanelinjen kontrolleren forvalter i musikkprogrammet har ingen relasjon til hverandre bortsett fra det faktum at de viser sanger.

    Før du fortsetter, sørg for at du forstår begrepene en navigeringskontroller og en fanelinjen controller som de er viktig senere i denne serien.



    Legge annen Table View Controller

    La oss legge til en fjerde visning kontrolleren til fanelinjen kontrolleren som viser hver eneste bok i < b> Books.plist
    . Opprett en ny UITableViewController underklasse og name it TSPAllBooksViewController.

    Denne visningen controller vil trekke ut alle bøkene fra Books.plist og vise dem alfabetisk i en tabellvisning. Åpne TSPAllBooksViewController.m og legge til en ny eiendom bøker av typen NSArray til klassen forlengelse på toppen
    #import "TSPAllBooksViewController.h"@interface TSPAllBooksViewController ()property NSArray * bøker;.end

    I visningen kontrolleren viewDidLoad metode, påberope vi extractBooks, en hjelper metode som vi vil gjennomføre løpet av kort tid. Jeg generelt prøver å holde viewDidLoad så konsis som mulig ved å pakke oppgaver i hjelpemetoder som extractBooks. Dette gjør koden lettere å lese og mer vedlikeholdsvennlig Anmeldelser - (void) viewDidLoad {[super viewDidLoad].; //Set Tittel self.title = @ "bøker"; //Pakk Bøker self.books = [selvtillit extractBooks];}

    La oss undersøke gjennomføringen av extractBooks. Vi starter med å lage en foranderlig matrise som vi skal legge bøkene til hver forfatter i eiendommen listen. De neste to linjene bør være kjent hvis du har lest den forrige artikkelen. Vi ber søknaden bunt for filbanen for Books.plist og bruke den til å laste innholdet Books.plist i en liste som heter forfatterne. Vi iterere over rekken av forfattere og legge bøkene til hver forfatter til foranderlig matrisen vi opprettet tidligere. Hvis du vil sortere rekke bøker, skaper vi en slags descriptor med en nøkkel av tittel. Etter at vi sortere bøkene etter tittel, er et nytt utvalg opprettet, resultat, ved å sortere foranderlig array ved hjelp av den slags beskrivelse. Vi returnerer sortert liste over bøker Anmeldelser - (NSArray *) extractBooks {//Buffer NSMutableArray * buffer = [[NSMutableArray Alloc] init].; //Laste Forfattere NSString * filepath = [[NSBundle mainBundle] pathForResource: @ "bøker" ofType: @ "plist"]; NSArray * forfattere = [NSArray arrayWithContentsOfFile: filepath]; for (int i = 0; i < [telle forfatterne]; i ++) {NSDictionary * author = [forfattere objectAtIndex: i]; //Legg til bøker til buffer [buffer addObjectsFromArray: [forfatter objectForKey: @ "bøker"]]; } //Sorter Books Alfabetisk NSSortDescriptor * sortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @ "Title" stigende: YES]; NSArray * Resultat = [buffer sortedArrayUsingDescriptors: @ [sortDescriptor]]; returnere resultat;}

    Sorter beskrivelser, forekomster av NSSortDescriptor, blir brukt til å sortere samlinger av gjenstander, slik som arrays, ved å angi egenskapen som må brukes til å sammenligne to objekter av samlingen. Du kan trygt se bort fra denne delen av gjennomføringen av extractBooks hvis det er ikke helt klart, fordi det ikke er viktig i omfanget av denne leksjonen.

    De implementeringer av UITableViewDataSource protokollen metoden er svært likt det Vi så tidligere i denne serien. Ta deg tid til å inspisere gjennomføringen av hver metode under Anmeldelser - (NSInteger) numberOfSectionsInTableView: (UITableView *) Tableview {return 1;} - (NSInteger) Tableview:. (UITableView *) Tableview numberOfRowsInSection: (NSInteger) section {retur [self.books telle];} - (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath {//dequeue Gjenbruk Cell UITableViewCell * celle = [Tableview dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath]; //Fetch Book NSDictionary * bok = [self.books objectAtIndex: [indexPath ro]]; //Konfigurer Cell [cell.textLabel setText: [bok objectForKey: @ "Title"]]; returnere celle;}

    Som vi så i leksjonen om bord visninger, må vi erklære celle gjenbruk identifikator, og vi må også registrere en klasse for cellen gjenbruk identifikator
    implementation TSPAllBooksViewControllerstatic NSString * CellIdentifier = @ ". Cell Identifier "; - (void) viewDidLoad {[super viewDidLoad]; //Set Tittel self.title = @ "bøker"; //Pakk Bøker self.books = [selvtillit extractBooks]; //Register klasse for Cell Gjenbruk [self.tableView Register: [UITableViewCell klasse] forCellReuseIdentifier: CellIdentifier];}

    Med den nye visningen kontrolleren klassen klar til bruk, leder tilbake til dreieboken, dra en UITableViewController eksempel fra Object Library
    , og sette sin klasse TSPAllBooksViewController. Med tabellvisningen valgt, angi antall Prototype Cells
    til 0 i Attributter Inspector
    . Før du kjører programmet i iOS Simulator, skape forholdet naturlig overgang mellom fanelinjen kontrolleren og tabellvisningen controller vi nettopp lagt.

    Bygg og kjøre prosjektet for å se resultatet av våre hardt arbeid. Hvis du har et øye for detaljer, har du kanskje lagt merke til at tittelen på den fjerde kategorien vises bare etter at fanen er valgt. Kan du gjette hvorfor det er?



    Se Visste ... ikke laste

    Årsaken til dette merkelig innfall er faktisk ganske enkelt. Generelt er et syn ikke lastet inn i minnet før det er absolutt nødvendig. Dette betyr vanligvis at en visning er lastet inn i minnet når det handler om å bli vist til brukeren.

    Når fanebasert Bibliotek programmet startes, den første kategorien er valgt som standard. Så lenge den fjerde kategorien ikke er valgt-av brukeren eller programma-det er ikke nødvendig å laste visningen av den fjerde visningen kontrolleren. Som et resultat, er viewDidLoad metoden ikke kalt inntil den fjerde fliken er valgt, noe som i sin tur betyr at tittelen ikke er satt inntil den fjerde fliken er valgt.

    Løsningen er enkel. En bedre tilnærming er å sette visningen kontrolleren tittel når visningen kontrolleren er initialisert. Hvis vi setter tittelen i klassen sin init-metoden, kan vi være sikre på at visningen kontrolleren tittel er satt i gang

    Åpne TSPAllBooksViewController.m og legge til en metode som heter initWithCoder. Som vist nedenfor. Denne metoden er påberopt av operativsystemet for å opprette en forekomst av klassen Anmeldelser - (id) initWithStyle: (UITableViewStyle) stil {selv =. [Super initWithStyle: style]; if (egen-) {//Set Tittel self.title = @ "bøker"; } Returnere selv;}

    Dette er også en god tid til å inspisere flyten av en typisk init-metoden. En initialisering metoden starter vanligvis med en oppfordring til init metoden i superklassen, i dette caseinitWithCoder :. Jeg understreket hvorfor dette er viktig når vi diskuterte theviewDidLoad metoden tidligere i denne serien. Resultatet av [super initWithCoder: aDecoder]. Er tildelt selv, forekomsten av klassen vi jobber med

    I neste trinn, bekrefter vi at selv ikke er null. Hvis selv er satt ikke nil-det er på tide å videre konfigurere forekomst av klassen, selv. En initialisering metoden bør alltid returnere enten klassen forekomst eller null hvis noe har gått galt

    I hvis setningen i initWithCoder. Vi satt visningen kontrolleren tittel eiendom for å løse problemet jeg diskuterte en stund siden

    Det var mye teori for å fikse et trivielt problem. Imidlertid er forklaringen over en god introduksjon til en annen viktig del av fanelinjen kontrollere, tab bar elementer. For øyeblikket kategoriene på fanelinjen viser bare tittelen på hver visning controller eller, i tilfelle av den andre og tredje vier kontrollere, en standardtittelen for Vare
    . I de fleste applikasjoner, fanene viser også et lite ikon hinting på funksjonen eller formålet med utsikt kontrolleren under fanen. La oss se hvordan å implementere dette.



    Tab Bar Elementer

    I forrige leksjon, skrev jeg at hver visning kontrolleren på en navigasjons stabelen holder en referanse til navigasjonskontrolleren styring av stabelen. Det samme gjelder for visning kontrollerne som forvaltes av en fanelinjen kontrolleren. En visning controller administrert av en fanelinjen kontrolleren holder en referanse til fanelinjen kontrolleren i sin tabBarController eiendom.

    I tillegg til disse egenskapene, har utsikt controller også en tabBarItem eiendom, en unik forekomst av UITabBarItem klasse . Denne egenskapen brukes når visningen kontrolleren er et barn av en fanelinjen kontrolleren. En fanelinjen elementet har en tittel, et bilde, og en tag. Koden er bare et tall som kan brukes til å identifisere en fanelinjen element i fanelinjen. Som standard er fanelinjen elementet tittel arvet fra visningen kontrolleren tittel eiendom, som er grunnen til den første og siste kategorien i fanebasert Bibliotek program bærer tittelen på deres respektive syn kontrolleren.

    Åpne TSPAuthorsViewController.m og legge til en metode som heter initWithCoder: som vist nedenfor Anmeldelser - (id) initWithCoder: (NSCoder *) aDecoder {selv = [super initWithCoder: aDecoder].; if (egen-) {//Set Tittel self.title = @ "Forfattere"; //Set Tab Bar Element self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @ "Forfattere" image: [UIImage imageNamed: @ "icon-forfattere"] tag: 0]; } Returnere selv;}

    Vi skaper en fanelinjen element og tilordne den til visningen kontrollerens tabBarItem eiendom. Den initializer av UITabBarItem klassen godtar en tittel (NSString), et bilde (UIImage), og en tag (NSInteger). Før bygging og drift av prosjektet, laste ned kildefilene til denne leksjonen og dra ikonet-authors.png og [email protected] inn i prosjektet. Som du kanskje husker, filen med @ 2x suffikset rettet mot enheter med retina display, mens filen uten @ 2x suffikset mål non-retina enheter.

    Legg merke til at det ikke er nødvendig å spesifisere fil utvidelse av bildefilen når du bruker klassemetoden imageNamed: av UIImage. Vanligvis trenger du ikke å spesifisere hvilken versjon av filen-retina eller ikke-retina-bruk. Basert på filnavnet og enhetens maskinvare, avgjør operativsystemet hvilken versjon den bruker

    Jeg har også flyttet tittelen oppdraget til initWithCoder. Metode som vi gjorde i TSPAllBooksViewController klassen. Kjøre programmet en gang til for å se resultatet.

    Vi kan gjøre det samme for TSPAllBooksViewController klassen. Åpne MTAllBooksViewController.m og oppdatere initWithCoder: metode som vist nedenfor Anmeldelser - (id) initWithCoder: (NSCoder *) aDecoder {selv = [super initWithCoder: aDecoder].; if (egen-) {//Set Tittel self.title = @ "bøker"; //Set Tab Bar Element self.tabBarItem = [[UITabBarItem Alloc] initWithTabBarSystemItem: UITabBarSystemItemContacts tag: 1]; //Set Badge Verdi [self.tabBarItem setBadgeValue: @ "12"]; } Returnere selv;}

    I tillegg til å sette visningen kontrolleren tittel, setter vi det tabBarItem eiendom. Men denne gangen gjør vi bruk av initWithTabBarSystemItem: tag: konfigurere fanelinjen elementet. Du kan bruke denne metoden hvis du ønsker å bruke et system som følger fanelinjen element. Det første argumentet med denne metoden, UITabBarSystemItem, bestemmer både tittelen og bildet av fanelinjen elementet.

    Det er også mulig å gi en fanelinjen element et merke verdi som vises i gjennomføringen av initWithCoder :. Merket verdi forventes å være en NSString eksempel.

    Når du arbeider med fanelinjen kontrollere, husk at det er roten visning kontrolleren av hver fane som bestemmer hvordan fanelinjen element av den aktuelle fanen ser. For eksempel, hvis en fanelinjen kontrolleren styrer en navigeringskontrolleren med en rekke visningskontrollere, er det fanelinjen element av navigasjonskontrolleren rot syn kontrolleren som brukes av fanelinjen kontrollerens fanelinjen. Den UITabBarItem klassen har noen andre metoder for å tilpasse utseendet og følelsen av et fanelinjen element videre.



    Flere Se Controllers

    Før du avslutter denne artikkelen, jeg ønsker å vise deg hvordan fanelinjen ser når fanelinjen kontrolleren forvalter mer enn fem view kontrollere. Som jeg nevnte tidligere, er bare fem faner vises til enhver tid, men fanelinjen kontrolleren gir støtte for å håndtere mer enn fem barn view kontrollere.

    Åpne hovedstoryboard og legge til to tilfeller av UITableViewController. Skape en relasjon naturlig overgang for hver tabellvisning controller og kjøre programmet i iOS Simulator for å se resultatet.

    De ekstra view kontrollere som vi har lagt er ikke veldig nyttig, men de viser hvordan en fanelinjen kontrolleren styrer mer enn fem barn view kontrollere. Fanelinjen kontrollerne gir tilgang til den femte og sjette visning kontrolleren på fanelinjen kontrolleren. Brukerens selv får muligheten til å redigere posisjonene til visningen kontrollere i fanelinjen.



    Konklusjon

    Det er viktig å forstå at UITabBarController og UINavigationController klasser hver representerer en unik bruker grensesnitt paradigme. Denne artikkelen viser også at fanelinjen kontrollere er ikke vanskelig å mestre når du forstår komponentene som er involvert.

    I neste artikkel, vil vi ta en titt på data utholdenhet på iOS og alternativene du har som utbygger.