Opetusohjelma 3: iOS-lähetysseuranta muistutuksin

Joskus paras tapa oppia on tehdä työ. Kun saavut näiden ohjeiden loppuun, sinulla on toimiva lähetysseurantasovellus iOS: lle.

Staattiset solut ja tekstikenttät

Nyt kun olemme valmiita lisäämään lähetyksiä, meidän on muokattava luomaamme taulukkonäkymää, jotta siinä olisi vain yksi solu. Lisäämme loppujen lopuksi vain yhden lähetyksen kerrallaan. Tätä varten käytämme staattisia soluja dynaamisten prototyyppien sijasta. Dynaaminen prototyyppi on solu, jota tuotetaan massatuotannolla dynaamisesti (lennossa). Staattista solua käytetään luomaan yksi tai muutama yksilöllisesti erottuva solu rajoitetun vaatimusjoukon mukaisesti. Tarvitsemme esimerkiksi vain yhden mainituista soluista, eivätkä ne vaadi dynaamisesti muuttuvaa tietoa. Ainutlaatuinen solumme vaatii vain tekstikentän, jonka käyttäjä voi täyttää.

Valitse kuvakäsikirjoituksessa AddShipmentViewController-taulukonäkymä ja siirry dynaamisen prototyypin soluista staattisiin soluihin. ( Kuva A )

Kuvio A

Poista kaksi alaosaa, koska et tarvitse niitä. Napsauta vain niitä ja paina poistopainiketta. Nyt, jotta se näyttää ammattimaisemmalta, aseta taulukonäkymän tyyppi "ryhmiteltyyn", jotta solusi näyttää kuviolta B.

Kuvio B

Vedä nyt tekstikenttäsäädin objektikirjastosta soluun ja keskitä se. Nyt kokoataan se suunnilleen solun kokoksi ja asetetaan se Reunaton-tilaan, jotta et voi periaatteessa kertoa, että tekstikenttä on olemassa. Huomaa, että käytimme tekstikenttää, ja se johtuu siitä, että se on ohjain, jonka avulla voidaan vastaanottaa erikokoisia käyttäjän syötteitä, ja se voi reagoida käyttäjän vuorovaikutukseen tavalla, jota etiketit eivät voi. Joten solusi näyttää nyt kuva C.

Kuvio C


Silloin tämä hierarkkinen näkymä kuvakäsikirjoituksesi kohtauksista ja esineistä on hyödyllinen. Sen pitäisi näyttää kuvalta D.

Kuvio D

Tämä tekee selväksi, että AddShipmentVC sisältää taulukonäkymän, joka sisältää osan solusta, joka sisältää tekstikentän. Joskus pudotat vahingossa tekstikentän tai tarran solun ulkopuolelle ja kun suoritat sovellusta, hullu yrität löytää sen.

Suorita sovellus ja huomaa, että heti kun kosketat tekstikenttää (solun sisällä) näppäimistö liukuu sisään ja voit kirjoittaa. Huomaa kuitenkin myös, mitä tapahtuu, jos napautat solun oikealla reunalla, missä tekstikenttä loppuu ja jonkin verran solua on vielä jäljellä. ( Kuva E )

Kuvio E

Napautat todellista solua, joten solu vastaa luokkamenetelmäänsä vastatakseen napautukseen korostamalla sen sinisenä. Poistamme sen käytöstä lisäämällä tämä menetelmä AddShipmentVC .m-tiedostoon:

 - (NSIndexPath *) tableView: (UITableView *) tableView willSelectRowAtIndexPath: (NSIndexPath *) indexPath {return nolla; } 

Jatka eteenpäin ja aseta solun valintityyliksi Ei mitään kuvauskäsikirjan Attribuutit-tarkastajassa.

Käytämme nyt toista edistynyttä XCode-ominaisuutta (editorin upottamisominaisuutena). Katso oikeassa yläkulmassa ( kuva F ) ja huomioi nämä painikkeet.

Kuvio F

Minulla on vakioeditori avoinna, mutta en assistentieditoria tai versioeditoria. Minulla on myös Navigator- ja Apuohjelmat-ruutu avoinna, mutta ei Debug-ruutua. Aiomme tällä hetkellä käyttää apueditoria luodaksesi pistorasian, mutta koska se ei ole niin täynnä, suljemme Apuohjelmat-ruudun. Mene eteenpäin ja avaa avustajaeditori. Koska se on nyt niin tungosta, jatka ja sulje Apuohjelmat-ruutu. Jos et sulje Apuohjelmat-ruutua, XCode-ikkuna näyttää kuviolta G.

Kuvio G

Jatka ja sulje Apuohjelmat-ruutu, jotta sinulla on enemmän liikkumavaraa. Jos haluat puhtaamman ilmeen, voit jopa sulkea vasemmalla puolella olevan Navigaattori-ruudun. Joka tapauksessa AddShipmentVC: n pitäisi näkyä kuvakäsikirjoituksessa ja avustajaeditorin olisi pitänyt valita automaattisesti vastaava .h-tiedosto ja näyttää se. Nyt mielenkiintoinen osa - Ctrl + vetämällä kuvakäsikirjan tekstikentästä AddShipmentVC .h-käyttöliittymään.

Saat ponnahdusikkunan, kuten Kuva H.

Kuvio H

Huomaa: Vedä ehdottomasti AddShipmentViewController -sovelluksen @rajapintaan, ei AddShipmentViewControllerDelegate-protokollaan.

Huomaa, että se yrittää luoda UITabelViewCell-tyyppistä pistorasiaa. Se ei ole hyvä asia! Yritämme luoda pistorasian tekstikenttään, jotta voimme käyttää sitä koodina ja siepata käyttäjän syöttämät tiedot. Napsauta peruuta ja varmista, että olet valinnut tekstikenttäohjauksen kuvakäsikirjoituksessa ja toista Ctrl + -toiminto. Haluat nähdä jotain kuvion I kaltaista.

Kuvio I

Kun vedät oikein, hierarkiaruudussa näkyy, että olet valinnut tekstikentän oikein. Kuvakäsikirjoitus näyttää tekstikentän ympärillä olevat kahvat. Lopuksi ponnahdusikkuna näyttää, että tämä pistorasia on UITextField-tyyppiä.

Varmista, että kentät on asetettu seuraaviin arvoihin:

  • Liitäntä: pistorasia
  • Nimi: textField
  • Tyyppi: UITextField
  • Varastointi: Vahva

Paina Yhdistä-painiketta ja huomaa, kuinka se luo omaisuuden ilmoituksen. Älä unohda @ syntetisoida uutta omaisuuttasi ja asettaa se nollaksi viewDidUnload-menetelmällä.

Vaihda AddShipmentVC Done -tapa seuraavasti:

 - (IBAction) suoritettu: (id) lähettäjä {NSLog (@ "Tekstikentän sisältö:% @", itse.textField.text); self.delegate addShipmentViewControllerDidSave: itsearvo: self.textField.text; } 

Muokkasimme hieman edustajapuhelua siirtääksemme textField.text -arvon. Siksi meidän on muokattava ViewController-vastaanottomenetelmää tähän (ja kirjattava arvo):

 - (tyhjä) addShipmentViewControllerDidSave: (AddShipmentViewController *) -ohjaimen arvo: (NSString *) arvo {NSLog (@ "VC: hen vastaanotettu arvo on% @", arvo); self dismissViewControllerAnimated: KYLLÄ loppuun: nolla; } 

Tällä tavalla voimme vastaanottaa arvon ja kirjata sen uudelleen. Älä unohda muuttaa protokollan menetelmää myös AddShipmentViewControllerissa:

 - (tyhjä) addShipmentViewControllerDidSave: (AddShipmentViewController *) -ohjaimen arvo: (NSString *) -arvo; 

Suorita nyt sovellus ja kirjoita kenkä. Paina Valmis-painiketta ja katso kuinka konsoli kirjaa arvon kaksi kertaa. Kerran AddShipmentViewControllerin Tehty-menetelmässä ja jälleen ViewControllerin addShipmentControllerDidSave-menetelmässä.

Täydellinen! Joten olemme onnistuneesti vastaanottaneet käyttäjän syötteet yhdessä viewcontroller -objektissa (vc-objekti) toiseen vc-objektiin.

kiillotus

On hienoa, että kun käyttäjä napauttaa tekstiä, näppäimistö aukeaa. Mutta se on hyödyllisempää, kun käyttäjä lataa näytön, jossa on tekstiä luettavaa tekstiä ja täytettäviä tekstikenttiä. Meidän tapauksessamme ainoa tehtävä on täyttää tekstikenttä, joten olisi kiva esitellä näppäimistö heti, kun uusi näyttö tulee näkyviin. Joten etsi ja lisää tämä menetelmä AddItemViewController -sovellukseen.

 - (tyhjä) viewWillAppear: (BOOL) animoitu {super viewWillAppear: animoitu; itse.tekstikentästä tulee ensimmäinen vastaaja; } 

Valitse nyt kuvakäsikirjoituksessa tekstikenttä ja tee seuraavat muutokset:

  • Paikkamerkinnässä aseta arvoksi "Lähetyksen nimi"
  • Aseta fontti järjestelmään 17
  • Vieritä alas ja poista Säädä sopivaksi -valintaruudun valinta
  • Aseta isot kirjaimet lauseisiin
  • Ja aseta Paluu-avain valmiiksi

Lisäominaisuuksia

Täällä on monia erilaisia ​​vaihtoehtoja, joissa voit pelata. Erittäin mukava käyttäjäkokemukseen suuntautunut ominaisuus on tehdä näppäimistö tyyppisestä arvosta, jonka kirjoitat tekstikenttään. Jos käyttäjän on esimerkiksi syötettävä postinumero, käytä numeerista näppäimistöä. Jos käyttäjä antaa sähköpostiviestin tai URL-osoitteen, käytä sopivaa näppäimistöä, joten käyttäjän ei tarvitse etsiä kiihkeästi erikoismerkkejä jne.

Lopuksi, varmista, että tekstikenttä on valittu, ja avaa Connections Inspector. Vedä tapahtumasta Did End on Exit tapahtumanäkymään ohjaimeen ja valitse suoritettu toimenpide. Tämä laukaisee valitun valitsimen, kun käyttäjä osuu näppäimistön Valmis-painikkeeseen.

Toinen yksinkertainen ominaisuus, jonka voit lisätä yhdellä napsautuksella, on automaattinen käyttöönotto-palautusavain, joka tarkistaa tekstikenttä automaattisesti varmistaaksesi, että tekstikentässä on ainakin arvo, ennen kuin annat napauttaa Valmis-painiketta.

Okei, seuraava lisättävä ominaisuus on tarkistaa voimassa olevat tiedot ennen kuin napsautat Valmis-painiketta palataksesi ja hylätäksesi AddItemViewController. Tätä varten meidän on tehtävä näkymäohjaimesta valtuutettu tekstikenttään. Tekstikenttä lähettää tapahtumia tälle edustajalle. Edustaja, joka on AddItemViewController, voi sitten vastata näihin tapahtumiin ja tehdä asianmukaisesti.

Joten varmistakaamme, että AddItemViewController-liittymärivimme näyttää tältä:

 @interface AddItemViewController: UITableViewController 

AddItemViewController on nyt yleinen tekstikenttäobjektien edustaja. Tässä tapauksessa meidän on kerrottava tekstikenttäobjektille, että AddItemViewController on sen edustaja. Joten siirry kuvakäsikirjoitukseen ja valitse tekstikenttä. Vedä Connection Inspectorissa "edustajalta" AddItemViewController-telakkaan, kuten kuvassa J.

Kuvio J

Avaa nyt avustajaeditori ja Ctrl-vedä Valmis-painikkeesta AddItemViewController.h: hen ja nimeä se doneBarButton. Lisää vastaava syntetisointilause .m-tiedostoon ja aseta se nollaksi viewDidUnload-menetelmässä. Lisää lopuksi tämä menetelmä AddItemViewController: iin:

 - (BOOL) textField: (UITextField *) theTextField shouldChangeCharactersInRange: (NSRange) range substituorstring: (NSString *) merkkijono {NSString * newText = theTextField.text string stringByReplacingCharactersInRange: range withtring; if (uuden tekstin pituus> 0) {self.doneBarButton.enabled = YES; } else {itse.doneBarButton.enabled = EI; } palaa KYLLÄ; } 

Viimeinen nipistys

Mitä teemme täällä, on saada käyttäjän syöttämät tiedot ja sijoittaa ne merkkijonoon. Sitten tarkistetaan, onko se tyhjä, ja ryhdymme tarvittaviin toimiin. Ainoa ongelma on, että jos suoritat sovelluksen nyt, Valmis-painike on alun perin käytössä. Jos siirryt kuvakäsikirjoitukseen ja poista valinta tekstikentän Käytössä-ruudusta, se toimii täydellisesti!

Lue myös:

  • Opetusohjelma 1: iOS-lähetysseuranta muistutuksin
  • Opetusohjelma 2: iOS-lähetysseuranta muistutuksin
  • Parempi koodi: Määritä laitetyypit ja iOS-versiot


© Copyright 2020 | mobilegn.com