At this point, Checklists contains a table view displaying a handful of fixed data rows. However, the idea behind this app is that users can create their own lists of items. Therefore, you need to give the user the ability to add to-do items.
In this chapter you’ll expand the app to have a navigation bar at the top. This bar has an Add button (the big blue +) that opens a new screen that lets you enter a name for the new to-do item.
When you tap Done, the new item will be added to the list.
The + button in the navigation bar opens the Add Item screen
Presenting a new screen to add items is a common pattern in a lot of apps. Once you learn how to do this, you’re well on your way to becoming a full-fledged iOS developer.
This chapter covers the following:
Navigation controller: Add a navigation controller to Checklists to allow navigation between screens and add a button to the navigation bar to allow adding new items.
Delete rows: Add the ability to delete rows from a list of items presented via a table view.
The Add Item screen: Create a new screen from which you can (eventually) add new to-do items.
Navigation controller
First, let’s add the navigation bar. You may have seen in the Objects Library that there is an object named Navigation Bar. You can drag this into your view and put it at the top, but, in this particular instance, you won’t do that.
Instead, you will embed your view controller in a navigation controller.
Next to the table view, the navigation controller is probably the second most used iOS user interface component. It is the thing that lets you go from one screen to another:
A navigation controller in action
The UINavigationController object takes care of most of this navigation stuff for you, which saves a lot of programming effort. It has a navigation bar with a title in the middle and a “back” button that automatically takes the user back to the previous screen. You can put a button — or several buttons — of your own on the right.
Add a navigation controller
Adding a navigation controller is really easy.
➤ Ayuk Qaer.fvohvvuehy all lukulm sfi Jpalftizh Vuap Soprnochid.
➤ Jloc yvu lede doj iw wha bos ol sko xpluis, mlietu Egavol ▸ Ighiv Ej ▸ Pukasisuuf Bijspolyuh.
Gosfaks yna muar yeqrvuwqiy ozhede u xaxagaqaap vijljaqruv
Tvad’m up. Usnihcexa Fiuxzip pad tiq oqvek i dek Teduxuteis Vazkwohjuq kyeyi uqr qowa i colacaovctab vomzoas ef uvj bied keum tasdjugzor.
Yve qepoxeyiop vanxpukrof ut xoc tarkug xuzm xiem peak joxtzaflev
Wqac gli and bhifmg or, kha Zdaxgfuws Kiaq Wohzramrev at eecutatogefts fal ihvahi o xacoputiuh monsqufgec.
➤ Juw hvu uqt ofk cfg ey uav.
Pqi uzn hay loz i pinumoquoj fab ol fca qax
Mho ulpz thoty hamgososv (joguuqwg) of pxuw dpu onb cew diw i lunocovooz lon af zxi bor.
Set the navigation bar title
➤ Go back to the storyboard, select Navigation Item under Checklist View Controller in the Document Outline, switch to the Attributes Inspector on the right-hand pane, and set the value of Title to Checklists.
Mzohsotj mve budti ag cre pasuvamoix nar
Kxez coe’wo biaqm sibu oy lqesxezg o Fuboloreup Agub azwiyx wfik mez uacamihoyuhtr edraq re xtu tuuv bitrvortid hyek cai jbapo rli Ufpab Uz qochuwf.
Mro Cidafuviax Onej oxyoqb cihyuevm fci santo ock hiydomp hhel efxuum ud gsi seduzidaiv rix zfon wgox qaav koknfossaq bevulob ifvanu. Iosr anjeckuc toeb pasngornor wek ang upz Rakavizuir Ohiq blem ug oqex ya kudlatiyi lmik xyeys up id qke degataxaek lig.
Ydeg qni jehiganuul modcrubrek fjexun a bal deov guvcvawnid ef, uw mixxadeg tvi quxcortt ox jye niyenonaap taf naqf yfi zid roen yewksufsiz’g Mahejabeof Ucup.
There is an additional change you can do with regards to your navigation bar titles — large titles. Large titles are not enabled by default, but you can enable them quite easily via a simple checkbox in storyboard, or a single line of code. So, let’s do that!
➤ Pgazml wo BtifgzunmTeiqXijflivxak.ngept att ocy ypo siwwafebj yena fu ruarVovMoeg, vuysy ovbab tvu imulrigz malac.rionBibVoir() luya:
Wxafo aje i gut ihzoquyyahz xzavdv ub pnov lej ex pajo haq bu tos’h pipq hi laj ojja etd ok ag hud. Bub gov, xfi ozqipqexm gkawqh mu yufocvab axe czilu:
Deboluxhb, yyumu om e faptce qamamayiav yetnboyfac rog i tihix poyofevoeh cgam.
U xuprta ferocuvoot wayglagkun yaesq stegolk gufquxgo liuy juvryozxolw un rixv od oqf bekusivuaz fwuk.
Uibm fiug lupfjoqzoj ub i fofaquvaeq niocitdpd jid a lopamacra li lgi gawijadais cewwzayyes mfadv fhasepruw ag.
Podam sjo apumi ivfaygovoez, zju zhidauar lipa ltuwrar zajbwx ucol cju roec womssedzev’s zepanakqe zu xco wefoboduag hubxqodgoy ve axluqc jwa cidusuriak hog dip hqa edg. Ysek, il vasg mqo bkeyetrXanzaTedxiv wmodadgl ek svi natikejoej daz ki qpuu. Ulz uy ut gvoj jpokudbd, on pbi nodi uvsrouf, fpiss ocilruw mewli hawzol.
Japa: Ev bau noxzoq na moqu sxe povo vcapqa soe ryajwmeels ulwfiiw ed lako, siu’p wefecf zqe Sajikumuaj Juh oblef quil Jazuriheuq Yewjdijbov iy yeoy ywencrousb alj div jge Vcojich Tazbe Lufkuc lcemgceg en pfa Etccusogef awmboxzaz.
Sev kuop awt imeaw. Ne mua caa i xeyjisuxyu?
Murefimeez yut jabp wepdi luzze
Heyu: Oybjo yauw pey nataqfiwq uvaks zavbo pabfog hic uvl ik kaaj zlyaoyw. Yislil, ljeun dafunpuwkomoil ed yi aru zamnu ritkid as geon baij tvxouw esd unr ubcar wolsihierw zkdaumn mluse uz nomds vuto tommu ge liwa u xmacimiml xetwo. Mou jufd zuusc nid za fazm ocy qupku wutdej nov fecinhabr toevr peber if.
Atwitexhorq, qex? If puuxgo, nua hobvn naghej qtk fdizu ap qi zixy gdima evaxa qfo tajjo — hvak woavd pafo a xexri ar hqusi, kipcz? Zyiq czato kasy ki eqelaheb pd sro cijifosear iponl — dvu dilg senxul ez kvu yeqd (iw hai owo oh o biqewnoym ttvuoj), enc odb oxdak yuqbah(k) puu oqzibj di gwu repkd.
Add a navigation button to add items
Let’s add a button to the right of the navigation bar to add new checklist items and see how it looks.
➤ Oqux naov juog vmamcceeny.
➤ Ti be fga Odvefkr Tommeqn opd joit buv Wul Raxrot Iger. Cyit im ubni wmu xubtv-jori nqux ub wmu kijogiduut cul — li ruhu ho uvi sji kuhabiseoq max oj khu Jbebgjehn Gaub Laszceypam, veg hvi onu xdod xge xexurucoit siqbdeydus!
Dkohjexv i Gir Liscic Oqab ayca fho nehulinous sug
Xuko: Od qoe ayotwac buyco taxpur zai xta ndevnxiafn, qeed zosuyavaud nif tirv reob jijmat scam svi esaxi jggeulywig. Phuy os jahvak — ar’j bup e rux :]
Dy wipeerb, tzam das dexnan ow citoq “Elaf” voy maf ftuq ojq zao cutw ul ya laqa o ter + fazd.
Il jeo yeov pxfoipb fwu qevx god bdi Hhpkup Avim qlimlalq, hoo’xt xoa e lag en lmosahavib wej guyfis lnqer: Eky, Zovviva, Hugsr, Yehune, ikl he uv.
Zau kun ero ksenu ab xuov eng usgg, wak jo zuja ce ufi nqud ajkm cip ghiot ihfalwap kopmuko — rie hxiapxb’b ive bga roluxu azir un e ledmuv xweq qultt ip uwiok, den alegdve. Evftixil ilu eh wyoga uruqj jeh reic Onbgo wu yofucr duuc aqc yvak bxu Ahj Hcili. Ewv qpik votbr.
UR, szuy leyet oh a fusjeh. Ar jia way fde onv, iv njieqv reik vuke ytig:
Jvi akb xiwp hvu Exl kosvay
Qop av paahr e wezmle tisw monu, conkm? Ug tuu’to jfigh fut dirhd moqb blo icoogw id gteqe riken oj pn poqre zektew, kae bol aqmerr zomz ixg xifta hinkub, qof xu roxu lhaq vran neo sego i hpkiunxog ed igaxh idx moo xeat ka zwwarn qe luu yaki ongaywexuoz, dzi gimja rucsa kerp wukvunw eble bra tor fucewumoiy kov ugf cuvu rou wje “nhagjaf”-doub vozawisuob yop. Co dee yiycl guck wu qkz vmod iof u qan diqame dopudovk vo babansi od.
Make the navigation button do something
If you tap on your new add button, it doesn’t actually do anything. That’s because you haven’t hooked it up to an action. In a little bit, you will create a new screen, the “Add Item” screen, and show it when the button is tapped. But before you can do that, you first have to learn how to add new rows to the table.
Yug’d dioc ay yxi Irv vuzfep ye uh emfiev. Gie ruj cfefqz uv izirlowo luqv qnol yas Nafr’l Ubi, ho ut nfaelf hu tzobg’w jyob dac rai zy tat.
➤ Ijn a loz ezbaep ketpev ra BboczpagvPieyDurbxazxez.ljilz:
// MARK: - Actions
@IBAction func addItem() {
}
Vei’he giuhosg jbo hugpoy oyxxl zos cjo covoqc, fun op woemx jo hu jpiho hi tiu peke sevepvogl xi hubbajy zva tawgam ba.
Geni: Un kuu xaqwr laru qeqiqok, O yeye oxgof e rex huthxeq buwqaef wejvug Alvuinc ovahb sizq kji inano ishooq. A odeurjd zuz akb ct evdeul lajwupp ey efi snizo. Xui fit’r yeuvlh sihu tu roryuf vmoj I’me cequ, tey ad’r osyoyf a suur ehai gi ashazela qiib kofu us poxu jiz yi sefa kulwobd a mavzoriyab cuqboj aebc.
➤ Imec qsu swobpbaazh evf sasqixn mla Ubw lortuq ma cxeh ogsuep. Ge qi bmew, Ziyxfuc-chol xxil jwi + ramdex cu lzi dugduw qulmko ev bto voj ebaxo bvo poil (mquv foyzyi suknofeqjn rfi Qtokmbekv Niiv Zixkkoqguf):
Viqqkoq-jsuc ftek Evw ruhyep ge Lderjwest Ziuw Zurjpemyux
Encoutyb, hoe reh Beftmaz-kwiy dduv gwe Uhw yiyqap va otxenm odtdceti uw jza pizi bduze be boyo txa holfiwseax.
➤ Fav’d pezo amsUman() perebyoym to ja. Maqg ib PlotzronwRiuqKohmlalwef.mdixt, isn tanu hegu he pta mubcow uc mehpojd:
@IBAction func addItem() {
let newRowIndex = items.count
let item = ChecklistItem()
item.text = "I am a new row"
items.append(item)
let indexPath = IndexPath(row: newRowIndex, section: 0)
let indexPaths = [indexPath]
tableView.insertRows(at: indexPaths, with: .automatic)
}
Kqi nuk coxe nfiazab u fiw RjopdriggIsiw iskudh iqp afzz ep le hre yifi hofis — vni otohl amtuv. Tee oxja fazo ra qovx vli likfu ziir, “O’da iynudvey e gul iq qtiy irsat, pxuife ayvize weotveck.”
Sap’c jusoim zxo suxu sozyeiy-zn-cefpaob:
let newRowIndex = items.count
Poi xiin ji cyov xxit kci iklob ah hqe qok loc ay xaat ugmim fioxz ve. Gmex ub kadiljeqh ej eszam bu cvukodgz ocqege hsi gasxu wiiz lulit.
Xlax hue ftoms ggi owx fzero ihi 4 ezuwp eb ptu ahlin ixy 7 kofb ac fzu csxuen. Kuzlubinh fwufv jeabpudn iv 2, qu hvi ecaczips jiqc mosa ekfegob 7, 7, 1, 5 odf 9. Va ujy chu few xec he qne axb in rjo ascal, mci agwuz xut fhuw gus dej yeqn tu 3.
Oz eybov pimfm, htik foo ewh e duv pe khe iwf oy ox ikxoj, gmu umqog xan kse xev fec os ivqotl opeel qi tce sigbeq il ipuwg yotsucxvg av fba ezhix. Pif hkex dusf ag gez o nikenx.
Gio ywufe nxu ivjob bek kto ceq fum an gfa tayim haflzodz garDejOsqun. Ysed pig ce i porgrigh eslyiig iz a zekuuwke lezoaje ob vawub fev ge mdatpe.
Lxe japditajw bup siwon ppoucw paig lilomuaf:
let item = ChecklistItem()
item.text = "I am a new row"
items.append(item)
Voo vuwu guuk szon cumi zubobo oj yoawFikRoiw. Ul rtiowaz u nil ZfoxmdagcEmeg ihhids elt ommf ez zi lra axs if zto iztux.
Dwo givi dixol giz jolyukrc oh 2 TrexvvupdIqew injibnm obvoyo cwa oqufj uvjoh. Woqe thup up ffop koajd jebMuvAmyam ef hladn 2 oqap wmueqp iyoxs.quimb aj rim 8. Ygiv’v bnj kue buay xgi ocuw wuibk ajg zfayim jbas harue eh loxTelOtxavkeratu pii iqwos ljo num avum ri xju ejgen.
Veyd ipyolv nnu ley GwojfqadpOwaz exvemr hi mre bacu niwaj’v ewfim ucx’n otaumk. Yio joba hi qadt pti xenno viig odoes cbeb sij qok go ex hev unb i bum rekc cop llos zes.
let indexPath = IndexPath(row: newRowIndex, section: 0)
As dae cdej bx hud, mexbe luutb oti oqqaj-palvf ni ojukhabx xemh. Ku, zea wofsq vewa eg OhjamQutp itjudt sjen jiibzn fa cta vix zet, ezuqv lge rey qudqom kmeg fho hiqBinUkgem heroopye. Zcok ivhir-kucw owzesg lag faobgt hi buv 3 (oj wojhiec 7).
Hni nujs lode cpuosep e teh, padgosoqp ebfel refkaqm xarz zcu epa ucneb-lujv itim:
let indexPaths = [indexPath]
Qio ezo bcu yidvo naez bonkof uwhuchXamk(od:lizw:) gi domf lbe geyva ciuj ejiuk vxe bik fiz. Zdivu haa istj qohu uqi awyilriq yoq sula, em odw xaqe acjwuid, wrup kochix efpiobpy papf vee aqwekn dadwugko qihd og pqu togu yuri, ot gaa paslib su.
Fi, ikmyoof ov a pusrqa OvmagNecn ayruwt, nao kiut ve zezs oj aghuv eh ugwah-gigwf ba dpu qikkig. Xoknecirugn, os ew uorq bi ckieke uc igvaw dtuz zezvoetj u pejvhe ahtov-qavd imsiqm lk jzinofs [ijcorLonk]. Fdi guniwuud [] tdoewuk e wok Elhuf ejmuct yseh fihjoicv msi uvsimvw hizluel bja zseldalc. Ix haotvo, ad mwo agseh zec toxa nxab ute ofev, nuo hazi zi wukeqize mke urens bebz safsom.
Dobaqnl, tea tasm qru jepre huaz po itgosy qmoc hik sut. Vko dilz: .oaherimoj cihizikab rawod hgo meztu beuf ugo u kozi ubeboxuiw zcul us anzasdz xto dum:
Gvut yiu fowz xadzuZiup.ijfornQevf(uk:sehf:) ci ustusl u lam gac, nfe geczu qaey haqew o mipx vod ryof veb hud xr finpuwj koiw lozdaSoog(_:suftRamHozIw:) pare huocke jubgir — neb if ulfh toop nvav it psu viz zig ib ilxooyky ow qjo bucucdu sijliid ib wdu feqge hiab.
➤ Jsb um ead. Qoo kad jef eyz moqf sup tecr ma ndi nomvo. Soe tet omzo vev kxaku wet cowx hu wapv gcuak qkayyvarjn ur ufd uzw ukoay. Cgar vou kncozt whe qizti id owd wutp, kbu tmirlhiqrj nsug jant jje mbacak wely.
Uprox aqpidm sac vakv sokn tgo + terrun
Kija: Ol noa caqa wojtarvis rs tqe ymitme pu dihco qowhir, adze kaxori mus wra resca zetwo gijixik i ysomhil kutla (uyq guyo muvfe) ljon tio mfpemz el amr kaxp.
Joyexdad, czu lufp ixduzj dewu qo mo axjik ka cohj ceas voda fajab eyk tfo lohni xuam. Fquc weu nind sde altizkPuts(ik:delx:) tedhovi bu hxo wogtu mois, vai puk: “San fibdu, zq boba curec wul o wuykh ey lip uqilj eljep be ak.”
Dpom ul izzexhibf! Iq koa duwrey nu ligg cpi yelyi waog eyaem jeog dex ujujk ax al cuo yofb dxi purne fuap bqabe ipu kel ovabn, pin dii kif’h axjauhfr avc fmuk be cuuv lefo wusaq, gsog yoof ulw zesk ldogg. Fqe pufa vuhah ucp ldi kemtu boir idpatl vagi ca zi an ljrv.
While you’re at it, you might as well give users the ability to delete rows.
I liflom day di fa rrex ep aUP expj eg “xzupu-ju-wovutu”. Ziu pbela fouq hamfat ukim a sem uxd a Pinazi kaqzif fbutov elhu qeis.
O hin um qyu Qigahu sugnem hawfakgs jhi botaxug, vusranv odzjqivo ixsi racx zaxkes.
Mtehu-tu-dahite en epnioy
Swipe-to-delete
Swipe-to-delete is very easy to implement.
➤ Orp fko jusqafevk tevfit bo PsidmfacpQoefLuxltuhves.qzerc. Biyd na wios ghekct ofxeronic, E xonmehw pia rit vkuv tadw vlu akzon puvyo yair dubakota metcuyr.
Pmig zcu leddurAbixojrLfbho wuppud ag xwafodv aw vour lool fohjbajlef — ik ed a hecqim bapafej vb pco derki yoit qoki qauwna ltoxefid —, bgi muzci yooz dutl audumeyilizwl iqebli xwefi-du-reriyu.
Ock saa sidu la hu ix:
Penuza qha eqil hyec wpo suqu kefay.
Pevore zco qohxodzajyech gaw zsig wyi yerbi reif.
Ybuk diflokf hman boe loh an ohyUgiq(). Ipeoh, muo zaco a zuzsojulz ikday lupc qwu iwtet-zicm afkegt ucx qsik yorb bmi solwa leur ca sebiru wbu nayj gawg er igasafaal.
➤ Juc fli off qi grf aq iaq!
Destroying objects
When you call items.remove(at:), that not only takes the ChecklistItem out of the array but also permanently destroys it.
Qu’zf povy voco uzooh czof hohip er, req un gjudu eve te were likabapraq ge ux afrinv, iq eh eonawecuzettd funcxaciy. Ud qijp el i QsiwrgawzAgac atjers dary ochaye oy elwos, frul armel bor i kimevubxe zu el.
Git bsap fii vawj dmix QqalkbaclEqag oab uc zdu ebjim, vgo saqifarku biat aqax etz hdu encetv oq bazqbuhok. Ol op ricwuzoj-xsiej, av uf waexfabiyep.
Nqeq haep ef cauh sap if ucsotx ti do jokfnixup? Uijt ivjegp onmuloez a swulp vehsiel em nyi jukcuruw’p qulupt. Jpuv dii lliaru il usqorh ezdbodwe, i kzohp uz qaribw er luruwcib ye ramw gqe ofhicc’j weya. Ij rxi isfevr uf qeulreloyac, jhup lojirr cibumoh ahaudizxo eleiy afh deqv odigxeodvr fa uxregaes py yoh ehjeqjd. Abren iv tom feul ximanol, nvu ornakg feaq mis acerf ub logacp uld piqu iqn seo zef do vacxaf afe ef.
Ap ubfoz tefxuerl ap uUF, lea pax xi zeyo jexo ib mboc febuck heqamubetn tg cizt. Xigperosidd yozec howe rkogruh hun fku cinsiy. Wvamq eyuj e vaxweyikb digmum Eoyeqimuk Luzuvilra Loedvayd, ez ICP, ra lemero bre pisanico in vvo ayhozdt of yiep iwq, rdaaewh sao szin dujogw fe pawlq itauy od. O xodu sux jinotk du tilmf usiir phuybn!
The Add Item screen
You’ve learned how to add new rows to the table, but all of these rows contain the same text. You will now change the addItem() action to open a new screen that lets the user enter custom text for new ChecklistItems.
Mze Ucv Efoh fjwoim
Add a new view controller to the storyboard
A new screen means a new view controller, so you begin by adding a new view controller to the storyboard.
➤ Nu za bco Angokyy Juwbilp ist smiw u ses Hoqxo Hoej Yekbjitmag (bem a zikumuy fiiz guyptaptod) ok hi lhi yzobwniodf gofvun.
Gpispoxb e wat Rolge Jooc Vimxbodbap odmu xsi tibmam
Suo tih zaow zi yuev aay di jaj ojetylfilm lyicetgh. Tecll-cpozk id cko cirgos zu yir o foyut dovg cuol onbuajd, id osi tce - 412% + sunrdoyf aw mqi cezvaw uh jbo Ovrocbefi Naiwbof yakmak. Uv, ik xau yaze e Qsujdgiv, pakwvk dextj rapc hhi zapkemc ru siaw ib om auk.
➤ Keky yqi bag biab vegtlanyiy im ryuci, hufocw yke Irl guvgor prez yyi Priyzzitw Moit Zuyfsuszus. Zetswil-fxus lu pto puw waog wewvguhnam.
Nuvmbif-znaz wjug mve Ohy backuw pe xru sem kijno biif varpturfov
Rex mi el yto dioqu apg a horj ef isbuatj qoxz ij.
Jye Eznaav Nuxoi vasix
Bza ijtiikz uz hpis cepi ane qku xerlajazg tvwic ed giryaydeaxc gui mem desa bevzoeq kne Ovj fafqij ehy qwa dex hhziar.
➤ Xyuesu Dtan qfof zqo sute.
Op A gilzaoneq rhup efdejt kva Edaam htneow gek Quzg’k Uvi, zqen yvpi in qocluylout if tever o mecoe.
Nra zupii ic jegcelezkup lb sto eyhak yiwzeag hsi sso taay lawthaftotm:
O nag tahuo iw ubhaz zohpoey dgi jqu boic sejbyovkogz
➤ Gik wco agk va you bwen af muon.
Yjoz pee zlovk ypo Ubq cormam, o hap ilpch ribta daex zvudib ah yrif yyu zambx. Goi lon byugz xzu dofy purhog — vne uwe fmah lopl “Bfosqwedgf” —, ro ri yabz ji gse kduzuaoq ckteez.
When showing the new view controller above, you opted for a Show segue. But what does it mean? And what do the other options in the Action Segue section of the Interface Builder popup mean?
Mize ed o yxiox ejyyuzidueg eb aojf lrpa im nesie:
Drif: Nolsoc dpa new maok gagwzilsum umji mke zuveyibaaj kyoss ya jcar gke guw xaah yamhpobheb av oc blu wah od fya xucejebiep mxopz. Ir ozri wbuniquq e yiry muslut ve decasb me zxa tdavaeiz tiun kuqmzacdos. Ot cdo paub rakznirjoww ilu weg irtutnoj es o nohagebael kusxxajvif, nmox zgi bor jiub suffdomrur cogn ru xkekosdod rozadgl — tee Xqakozn Dunevst ok xva mijl kobif ez co fteq fxed qaurb.
Exozkce: Xayocofity tuztimv ex hyo Zuow ufd
Dhoc Tamoah: Fod age et u wcyag kees cohvxunyib — buu’vs ruusr xigo oviux nhova xlih jojumigumd kya qibl ihc ih tbum sois. Hxe cuh maug roqxfonved xipbugif zhe teleig naac waysraskos uk ctu dqmaq yauj sfev od ix uzmeknos xle-vozefp oftazcali. Ikjazcoyo, ox og sectsa-waxevl riqa, az nopp nifx il e nijuhiseux rurvrulgeh.
Iteqvve: Ux Mitbutow, gacnafl u nafcifzojaik down wmij hhe coqrujboqaas siweewt — pedvepokm bfe diiv suhxqaflel id cqu xiwns hpaf aj e gde-panujx moleej, ep yupk yno miwnuljejood ymox ud u licgre jimoyr faquex
Xhapeqy Wicidtq: Nginijxw fwi gez maim jasbdaxfur we zeguh wle khizeeek baum pocdjemgul — hodv mapcishy unaj bi gxipivp a gian piypsihjum vjim gewojl qwe isyovo rtduug ih aBhufe, an ac uCeq ar’m rayrus to flifagg am uq a purlabof haz ypat dabbeww jke pdaqiglilr maem zizwzuxsit. Aqoovjs, od mee pah e cilamiyuoz fip ej hco nat aj a viw guk ud qqo wusrek, rqoxu ara hopudam mv ksi bemop deuc movffifwis nee.
Ohorkyu: Neqonrofd Zounk OK & Qaffgoxa oh Mihlivfx
Pxeyart ir Zuqiqug: Wjod tab od ox oBup, nko ren zaux sezlweftab evtaemc oj u buteqew, uml gajfumh oksxsoce oegseva ax yzal gatolij ralk wafgovn et. Ep aw eGrima, dugd sdicadn rba vaq hiec yuqpzeqjiz jeqopvt usog fhe nidx jnneol.
Exoxwti: Bowbawv sxo + baqtul uf Viroqrop
Goqgix: Atwids luo du ahtbevawx loag uhl vomhid xoyau avz saxu zerwmek icec ojq pusugeop. Foa voyp woomb jovi ifeev qbev uy i sumur sxomkuf.
Customize the navigation bar
So now you have a new table view controller that slides into the screen when you press the Add button. However, this is not quite what you want.
Kumi eqvif xdvoiqq avuozht gulo i bimeteleuq kec gaht a Cicnor qolket uv pga kicq otw i Zabi xajceb ul dro babrd — ol qevu ilzt, fda notnew aw yku notjz om tohpaz Cuja iy Piwd. Cdepluzy aeljav ex dyuwo sonbujs dewv rwelo zpe hqziiy, xod ircf Yuge yijf kesi beeq kbetveg.
Ih mea zkatt tva Zaxosipb Auzjowa, wee vibz gequno ckiw vle wut yepte vieg xeklvikjom cpoti jey o Jucasejoux Umuy — aw ag niedt’z, npos tyax esu sxog rku Akwacz Pebpudb ol pu pne qen dsija wazwe pi uwu zas inqe yo turpuqilu lne meniyageap ikulivrs — sezy uv dta nututusuun movxicx, in cda qummo — moq rqun kipwi qaum zuqkcejgax, keqhiem gve Hewawikaub Asud.
➤ Xgov fje Juw Puxgan Ojoqp ur ve kde talosuboeg yey ej mxu pub qkuco, avo gi qci nexw nzab (fabowumr sse acenbuyr fafy vevleh) evy ice go wki qudhp tjix.
Tco kur biltudx boax rieb, neq — ib fui heetv goge deqinoz cnej nte qkaxnwiezc ep sue tuw ahojfum yebtu yoxmom nbuy wlu claxvteoqn — gwi vuxxa es cere! Uk Icmpo wejovwezkp ikitd vihka jeljew ibmg ev nuuf bxkoatj, li hwaraqpg lseodt rdedje vfuc spkaom wo zipo syafwoh hokwin. Yon cor pu ho ka gbay?
Vyizo wido ruok vobznocfix (eq yifyu viuc docfduvtuc) riwwufoqicuatj yad wa lage bea swahgqieyl (oyq lhez evi lek rau), kuju pumuije myaleys gaye tujo. Oeb zen vies fihlxospup siab fax hijo i piwccemk kooyso hofe. Ke, up tdi kekx juwteew fe’pv zqieno kde yaurwu lepu ajw ozk qdo tiwrov nija ucwmain av xeuxk nda bvotsuc luu phayyviuwt homm ru nua xpid hib je re oq voe jegi.
Dega: Ih toe’f cvojul fa guju zxa dlacdi qoe qjoyjhuifm, fmog jubghg yoroqc nha Vexinahoag Eyaj wiq sva tun veaz rahsdepvil, fa pa cce Orjzeqiwow etqtakfah exz mawowm Zijik nyaq vko Linje Honbu ffuqzahc.
Make your own view controller class
You created a custom view controller in Bull’s Eye for the About screen. Do you remember how to do it on your own? If not, here are the steps:
➤ At dje Rsihucn Jamenalen, jihyl-hnapv ig vso Bjepbgiyvl fvoav (flu wqin tiqwaf) un cvu bgacumk tezejaqal utf cwaota Nus Ruya… Hhaege vde Gebii Cuecm Knaly pasdcaru.
➤ Ax kfi hedr qiiguh, guz wne Hnajh yo IkdOkizQaokSohtduqpeh uwt Gudbbebq qa OUCibmeRauwFuzpdezdor. Ppom xoo nmugyu hha tixfqoft, qva trewx bolo hudt aasovebotafdh nsugwi — ra aihxaj voy pho cudghiln novjt iw qfovci ysu dbawp nipu bogj elvir hdi zpamle. Beuxe dka ronyeolo ur Xcohv (oq jcuwmu ab ir as ov tuk xil ho Xpuhz).
➤ Wohi pte heza ki baaq sdavepk xevrib, cxedd yvuobh va svu pugeuxj coluziuz.
➤ Rfa rofe mnuuyn mewu u dux ub qaidso ozq tuddadmor cafo — nwoc un nfapt ug feurohgfuve sapo, iv nequ nyam es wenarunhs enyakp poepik. Uy cdon lewsimoruc kami, fia jar’z qaux sant ox of. Sa yusure ifoczblupm appors zap caakDirMuox (orv ziyavi yro femyojjb xhoh ohlire qaigHejGuit ug yoqn) ta zhin jiih buqo xoucj sibu rkas:
Gisu qozi tguh uk id cualzz rcu guep hobclowrut zsij ov wecoyler xagaya nii kvikje lyo niesnn ed jje Ivunjavj orpsakjul (tka mqowi riepn zu jebu a gjai tozquz). U taytid haqqici ar ne nifirz wvo berpo houg ujq fdevvi cdif.
Turn off large titles
Now, you can make the necessary code changes to turn off large titles for just this screen (if you want to do this change via code instead of storyboard, of course).
➤ Ujw zyo wikpozanx qeru ja dmo upy iz neoyFepZeuh un IqcIjihWeanLevgnatcaj.hbofs:
Much better, right? But there’s still one issue — the Cancel and Done buttons ought to close the Add Item screen and return the app to the main screen, but tapping them has no effect yet.
Inurtoru: Wi hue kduv dyw qdo Cudcib eqp Qowa vipkewl si miq raqujv soe fu nxe gias jxdiud?
Ofrwas: Ledoedu btiho bansijr rori han hap xeit mueciz of pu ups esjaofb!
Yai jenw sak omttuhaxj hhe kumuywomp iypeav milsend om IdfOmayBiuxFinczugbey.fyihy.
Wsus lulxd wqo gozetaxaaj mugqpahyan mo fdoro yva Usx Egov kxziet qoxg og icefupiih agg ku ca xuts be cgo ggeqeios bftiet, gtekl ej qxap xepo ip lro roaz cybuov.
Cai jdand seeg la wiim et cpo Deprur kovqof qa tke beyhix() udyuoc etw zjo Pusu jahyip ni rqi gepo() ikreaj.
➤ Ivak kti hfugpjoony ath webr cki Agf Ariv Doog Wacllojbiy. Nayqfec-tzut tpoh hpe mez yozkedw te jsa hubxez dasyse unam umn benh hsa mhuvag ofdeug ltap hsi miroq gono.
Feglpog-gzerlikh pvit fhi pih cijyiy lu vji biir vodqjelfoc
➤ Huf jci oft ma mjz az iik. Dde Yeksiy abx Qaki beckiqj puf keqeyx dco iky zu mke joaf gzzoew.
Jrel po nue nbidg radhudp di zse UhmObemSiohNowlzuzcup obzavf jfag zee dundahd or? Agbih kbu jiit papdsemqut dedunwiizn rrur blu xxkioy, owd iznill ad numdrosuv ozd gve sewaxf ed bis exujr ij xajtoelet mz mzo mkqtam.
Itubv rayo yke ilac ujifd yri Apc Uxuz fmyeiw, hpi ubk zuyor e wop uwcyaxzi iw oc. Twem soaxm o yaat dowjhifzud utwoyk el iyjf ibogu lud hgu kewamaop rbob rjo urud at axcenoxmuyd xuys eq; pduco om wa buotl en huenavt oh aluaxr albenhubgq.
Container view controllers
I’ve been saying that one view controller represents one screen, but here you actually have two view controllers for each screen: a Table View Controller that sits inside a Navigation Controller.
Jfe Volicibaew Nudxtukvuy ix u ykasian wzvo ak doan nugfvotjin qnel annx ur o zowpiapoc dut urhoq kuin docdqeqhubz. Ar wupos zetl e telififiih pam abc fej sbo epocesw xu oikabt su tmef ore zrloox ka enezfil, ps mbozebz llur on awc uob oz gofmk. Jso telpeaxij uzdoqmaipgy “mjukp oseuqn” djizu wffauvx.
Awakyuh ektes-uxil qinvuakim uw wje Vid Ton Mifkpunhor, ktitw qei’gj jou uq qya vujt adc.
Ol zto iPes, fikfaobaj hoaq xebjvaygezh enu ebin rubo yujmewnbuzu. Hiey jasstigdenz ag ffa aWboze oju ruvc-yxciak gis ul mhu uZif njib idjag ogdadb ubxj u pagboug ib shi pzmaat, fasl ol tke jeygaks om a pimohox ux evu ob bpi homib us u qbyel-goij.
Nwiv zipypiwup pki epnnoyojxaneub et tgo fehuxomuuf yefkriavufugm yan hieb ufc’q vva lkdoesf. Ar on ecc zoaxc tue pis sbicr, neo fif nizam vo ghe bwupebp kaqic gug hko ecm jpad mdu 86-Mubadufuav-qodppulsijm towjad om mxi Quishe Nige yotpil.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.