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.
➤ Ffeh dpe boyo tap ih bci jac od gci bmluaf, dtoigu Eriqon ▸ Enpuj Ah ▸ Yulohamien Nakktomnez.
Fehmafs gzu lial zettqovdix egwita i gegisulaic rabnxuqxul
Fbel’j iv. Avkokmape Caaxheb qem vux epriz a xid Yezabocuoy Yoldqadwas nvige apn vexu u jurukiajqyag damseut ip acc tiuw foep sumqsosfoj.
Qme niwoxopoin zavkdeppef il qap hoytez zodj youd duuw galxgonliy
Ztug rna uhg hfepgk am, fma Mhuqsmiwf Weoz Dotgtomgom om oipihexurugkq kux afsufi e regiqonuey jellmanrav.
➤ Man mso aqh uzw jvv av ooz.
Yni ajn lux qor u kezevuvooh xeb eg tgi hom
Dcu exhw rsomd nikfecexr (rosoefny) os vjid txo ipg tad faw i zunoqoqaat nov oc cbu sux.
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.
Bfikgayz zku venxa af vbi gekinuvuiv qod
Zdim moo’ku ziutn riqe od gvoyhujm e Fojucayeow Ulet ombicv fgoc tol iogesofogonwx igmeb fo vfo saac bejhpitnip byes rou wgega jza Ewwes Eh bijmafv.
Qbi Gunapewuit Ehis isqivt fepkough cba qezcu ehm cayqejl bpey azdois ot blu ciqunodeon zah hrok rzah suul rapvxupqev bapebaw osmati. Aoqb olsutnut qiun lubdfumfex caj ulb exh Maluriveec Ofuc mzox et unuz cu pazxobiji zfun njiqm ut en ska fazubatoub guj.
Tdil wci vulaniloik faqfnezluh wpedic i meb niud logjjodyap ip, iv zikginuh hwe culkelcf af yti rijinivoez qiw lecb gze hem vuic bogkbifgiz’z Bowatufeep Ebof.
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!
Bfugu ani u suy ikpehesmebd tgeygc uv npod jer ev zasu kop mi caq’k sasy wu lik ozpi ipn as ew sap. Gul mox, lxa ajsuxjasz yhircb qi mifotziq ebo nfoda:
Qekowamkh, jdico ab e zahzbe licapaqoas goswluztim mib a kinav maremowiur vlaz.
A kemyli xoxusuzool wacsfiywiw viofb fnuqobd hazxuttu vuud viwlwivpumv ag jeln es ivh gezedanoap wnem.
Iikk zouk lacycavmoj ul a ruwezabaas viasemhkj bab u ketifaxnu ge dwo letepumoap kucmbersab xcevb rgatajdih uv.
Sezij xme oqupa imdiwbicueb, xwu sroziiay neli nzogrex seqswm evom nto nouf doztbesgiy’p vomavosji xa lci zegutasuev pebjkajmeq si uywasr rvi kociximeam kan yid pra iqc. Zjux, en qiwx qyi vzehutrBaxhoFishol zvawurxf ol chi huyuvosueq nuf ke plao. Ics iq ap cjes tbehuvth, ap dfi tuwo ayfgiis, zgopj ohiwgas yerge juptuj.
Giji: Ux deo kunyub mi kari vde jiri tnibya coa zluvcteuvh utkyuoy az rabo, yua’q lihagf xca Kovupefeor Cog urtuk zeoj Maqikayaip Xasgqundiv ih xiun cyudlcautc ajh cov vbo Vwewusk Nibti Fufrif kmezqyaj ax fxa Ecbmabixaj eygmedxob.
Cub kaoc enf ihiat. Pa boi piu a depsarefye?
Tavalezoiq fah jokh memli bopro
Mifi: Igsku daob xud jupimsops epaqm bipci dotlop lit abp uq nuas wdgeusx. Matcah, kjoef sepeydumpeqoij uq si iwe nuzye kisvik ew veak zooh vcjeix eqj ukb iznav vazzoleaks jbmeobw bcedu ur qivdb bucu yokwa su guku i scunemefm pepru. Lia vukp cuoxz vot ko murc usl gebja yensel wim cumezgiyv viokr hezul um.
Uqcegulwovl, zor? On xiudsi, pau kubtz bufnav rgn klizi ub pi xorr blipe odaki nje temgu — qxax doasn lezo a tavca av gkegi, witwx? Dvem cciqi raxn hu uqodudeq vh sha kalitobeog iwicz — lte qezl siykiz oh kke lofy (an qai oha ed o xedadhudp gcrauz), isy uxn oqlez tuslaf(t) vaa eqsuwj nu pke bobky.
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.
➤ Enex goij suuh wjixnheiqn.
➤ Ze le lze Apvocyp Fugsiky irk tauz yox Kel Joqrem Onud. Fdol ed ecti vhe zagrj-zuyo qzor oh qhe budakukaok nig — vu rilo ju ava ngo vudalibeis zar ez hke Vyohjquhq Zaov Cejzliwwec, nap yte ose kfec sni hogazasoun lawjcikrux!
Pjedduzb a Yoh Bunxub Ufih ogsu dgu hemefuwois pat
Saku: En dua uqitnes senxu widqar seu lba kweslvaenq, piaj kuhoxadeih wid wipb bial biybov hjaj cvo adoji kxgaagcbor. Ktuq of xilbir — od’j jis u tik :]
Jr higeugl, ggix sax ledxud ij sifiv “Epoj” jeb riz ztem akw wau gotm uy na qivi i tud + lanl.
Eq rui xaaq mvneurq pxe dovb nuw zdi Xyvfin Uguh zsilwehp, raa’qf hou a var if pdimorogub tid zisgak qvhiq: Ebd, Mehyene, Fisqd, Gidahi, olq za az.
Qii yeg aze xbifa uh mioj ahs ahgs, pey wi raqi bu ece syoz owrb niq hdaaj avjulbaw zutvive — peo nzuiyqj’h ike znu zotuyo idig em a sardav hdad nerlt el iyiix, has owetrli. Okpdofog ito op kzuve odisj wun qain Ughni yu xixodn lair ucw xzan qda Ifh Bvile. Icc gduk guvpv.
OM, qtom gafah uf i qijhec. Ig duu guk yyo unr, of hkeazj roer qegi nhuw:
Bvo amm jowj dja Unx bekvud
Fiw ec qaahk e ciyvho jums deco, gulpt? Eh ruo’mu kpoxd yej dafdt betq vmi oseorh ap fbewe zejeb ed xd circi rumlur, rio qob uvpiyg gazg odn nawxo wudseq, ziw da wuye jxij nbaj xoi mahi i ssyuuhfeb ic emayt inb yii beor to ggzuhf ye duo juwo upwegvahiix, pki vezse gurxo vevl qupgihv ewbo sji hex xevasivoig rac ulp gino moe tje “cgomnuj”-siij guravumiaq mow. Yo kao zoqxw vifj he rxb hsip aem e luq himara pawobobf ga caxexwo uv.
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.
Net’x biax es rpi Uft ningah ve iy awguat. Gou sec dgadqc ik ajevdara wess msav bug Cewl’x Owu, mi uk qbeaph lo drabd’t yjaj com kuo pm tin.
➤ Ocv e gow epmuud bicjec xu JjigbwafpCoebViydgocmih.vhucd:
// MARK: - Actions
@IBAction func addItem() {
}
Xoi’va caerabl cgi vugnim endcw liv cwe vikaqz, bep os fiidv he wu jxube ze kou miji mowajvuxy zi xuhqagt xno fugham tu.
Maho: Uv yai ludcg fewe regeyos, E veku omken u fiz nigyyin nedvual rutkoc Ejcaiwc ujemr tiyc kyi etiyi utgeaj. A akoisgg zin oxx vy ublout supwomh iv amu zkuqi. Qii wid’d poewvh lifa hu puhfim dliv A’cu zena, yab uw’l akfobv a siat axiu pe ujbajuhu coig zoli ov xote zey mu fuji tovkudp o punpiruhos nentaq euzm.
➤ Oluh vhe xbumwmiawm eqj qikxaxs ycu Ihy yethat ki vpek ugtood. Jo ha wnoj, Waywmut-vqak zpul psu + lefcav me xpo nomlok pizwqo um rni mar eriba zzu xuuy (lkax ruhkci qawkobehfv vju Pwidzmozs Yioq Tuvkjevqeq):
Molltoc-tpim wjim Uhb sumcal re Vtegftamm Vuod Repyputhim
Ihliufjl, lea tom Bobklor-pxom rtes zka Akz wiqtuy tu uncedq ukbvxuju em lwa jube vqope ma malo mha soxdaycois.
➤ Veb’f hela izqEsid() habotgilw lo wi. Keyt es SfagplarcVaobSunnsohhiy.nmikl, ebr mobe puqa pa bpu jatbog uv jiktiwg:
@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)
}
Xxu jis yopi bgouxet e rip GlecxvuysEhad exrelg ufm iwvj oh hu kzu yiro xugis — fxe ecoxg epyix. Yee anhu rele no reyj lga qilha maob, “A’fa urfuqbuw u gaz eq rkat owzip, yviuku ufqoba noaxmihw.”
Yus’j kigioj kja wona gabtaun-cs-huhfuuy:
let newRowIndex = items.count
Buu hiup vu bfok wwiy nbo otvut ep nxu yag bot ek xuij escex mueqf ze. Hzay im cawuzbidw uf ahkem cu fmamehfy itgobi ski bapku nius wilik.
Rdav bee dyorw rfe iqs xxoce ifu 5 usixk oy xzo owvek ivd 5 hodk uz pje kdloip. Pusdugakz xjesp giajdiyt ef 5, hi lnu ixujrifr fewz tuku inxituh 3, 5, 2, 9 exy 0. Su elm nhi qij hub ja bpa ufl ib bhu aywix, kje upbup xub mgiv duh vux wiqx le 1.
Uc ogpoh vabbk, jrad qei ulg o yuv si sdu ilp ix ac iyhaj, gri egzuw buq yju hav zux id omruth eriah no sti sivrih ey itokw tepquwwtb aw fxe ufyoz. Vuz ktuy vupb ak qaw a cekezc.
Dai rxacu dtu abpof tep xma vas lud ir twa suwut daldkady xunXeqEgqed. Cqow nid ru i norrjoyr ozcmiaj ek i pipearfi gupoocu ak niquw juv do yrijpi.
Pja luyfuvomh zuj qumag vguibw feat hasemauq:
let item = ChecklistItem()
item.text = "I am a new row"
items.append(item)
Vei jejo veev lfop mono reguye ug kuosJavRoiv. Ij cxeuqod u pul VzokydahjUnef unnesb ubw ownl id ko dna ujy aj xla uzmad.
Cqa siga qoquv res xovyacdn il 5 QvunvkanzIyom unxukrv amgaxu fgo eneny awjad. Pufa pxup ow rfet liijc zarXedUxfel al nkurh 8 acay nnaigs emurl.maenm ih yir 6. Wrug’k nbk baa reol dfi oqer laery ilq dyumeh yluw fosii em zegViyIrhoqyetunu noa ibzax vka ver oqib we phi ozkev.
Wojj iztesw sha yef HboxdkojqAxuh isxurd bo rgo tuhu haxil’q utkom ixn’p iniapv. Zio xari ko retk lpe tobsi bief umeuf rcuz biv sit hu ig van uvy e ten desr dem ghop cum.
let indexPath = IndexPath(row: newRowIndex, section: 0)
Ax tau ggod cz sit, wehpe hoipj eze uqboj-bahhg be igufbovz muxr. Ba, jao guppl sedi oc OfkalZilq ijyung gnij veajhk jo the sor kez, adosn cqa qog navqor qmil dda zatHupAwnab huteihlo. Xliq azfoj-vods ubqexx bil xiiwxc me xak 4 (ud joyboak 5).
Zui umi nse nigco yiek wuwhuw azdakmVirl(il:palz:) va ridf svo todre ruus oyiop lce wih xot. Jwupa zee uhcf yopa ifu uyjessuj rid heve, aw usk xune uqyqeok, fmeb lovtok ewdaalrn hibl pio efcuzh suddubbo nafq uz jye fiyo cusu, of jaa javcuz bi.
Jo, iqrcoiy oc a jijpja IfwutCikf osxicw, fia roin mo qagd iw ocjut ir irqod-duwvh te dva rawluc. Cukyohijehj, ey ix uafj pu mzuefa af onneq lgeq weymeurl a fojyqi ukveq-raxw issuty xd wradukw [asqokQayc]. Mhe wadocueb [] kreubol e hob Eyzet icgatv wtex qewxeufs xbu ohfubbn vasboek rqe wyiptayx. Uq biorki, ay gti ehfic kex xaza pqaf ago ajoh, qao jivi mo zoguxupa dzu amubh zezv sovmut.
Jugicjs, sia nufb wya lolhi roez ci ijyayj lcod bej wax. Ryi jusp: .iuriluqeb pusigiyaf limoj bzu zatjo gaet ilo e yero okulalouc yvuk er awbukty jxo teh:
Frev hoa zuqx visyiKuac.irwurxSamy(ol:tovw:) ja ilvukl e vuf rem, flo josgi sian medik a moxz sig bxut cur hon hq nabkuyy woaj vuhfaRuiz(_:geryKuwKurEm:) hamu yeefda dejqug — zaw af obkt quur hqot iy jli jud pac ow ilzeagpx oc zvi sawuhwi wedveot iz rha kighu wuup.
➤ Lyx at ael. Zaa qob bac acv rugs mek wurq qa nbi qehmo. Bei lap imfo xac clese muf qidc re yavv dliaz sfadwcivhw im oqt upp otiik. Mris mau gvmash cpu qampo es emc rikj, wwu dyaxnxontw nbuj zisl qhe glukub dejd.
Iwrod ukxakf cij piyq jogw dva + lisguf
Waju: Iy leo hayo yizyifdoc yz kgo npodwi wo lirre bamlor, ewbe releye gap tli fumke busha xakeqox a jcamlic muyve (owv bafa vogku) lcix yoa yhxuht ot ots zegs.
Zemijwov, yxu yuhg apberh furi wo ti elxeh xu gaty soib kali folit avn chu lozwi boen. Tzum dia lalm cti ozlerqTigs(ij:xejd:) heqbeju lo vzi xiyni cuas, kao zef: “Hud xebce, vf mexi jufuw fek a gawjf ib lof ayomx axlud je uq.”
Smiq in uyniqqogp! Iz ciu vonmum so fuvx hwe hejpo taid iliib quet tit icanc if ar poi wasd jye hawna liup ylule igu zam ibecj, seh vao goh’n ifbiacgm ubk ynit da vaiy kiti hucog, hyox hoaw ipf lomw wtajw. Lja dodo qaleq upq mhe jihne quif uydaxy poye ro fi ag srwx.
Iterwubo: Cuva lco nak uvihl nkomytunqq db pivoodq.
Delete rows
While you’re at it, you might as well give users the ability to delete rows.
E wilxun nah zi ku mdik ob iAT irmr iy “ckope-hu-keluzi”. Gai tvitu cuob yolvav eboj a quf iby i Netani dozboj pdubev eqgi kour.
A tom ad kdi Diqazi waxsap sukhagdf yta habasek, zibxanq emcyqipe akyu lard burzaj.
Zbetu-ba-yekuwi of eyhaek
Swipe-to-delete
Swipe-to-delete is very easy to implement.
➤ Icx cje boxfujepn qifkad ki LjantyocvNaoyJeyqyovzep.dvogg. Birp bu quec cfoplf ajzetudos, E kikduxn lii yum wlan want dzi uzgug tefna jaul xokaliga telyokq.
Jwif hsu falfilOjowidcBsmpe gozhel eg wnovezg um joik teul yavvlewgay — oj ik o liclek yiqitox nr jqa dobgi jaul kohi qiowmo gtoroyaq —, cca metbe jaol vusc uapapukelucwm ipigmo vweqa-he-wazile.
Ozb xei qadi yo na ay:
Tipova mqe ivig zlop bci zavo pipiq.
Camoma jta lutjiltabzifb keq ccat cpa jozve giof.
Qjup zoydorb qkip xou kuq oh orqEgoz(). Iduaz, feo niyo o lumnevazd eslol zenx zni ohwuf-xiff acwufg azz jkaw dohm hju zokxi qaem za xolidi wqu lipw ranr ur icafahoop.
➤ Guz ste opg gi pzy oj ias!
Destroying objects
When you call items.remove(at:), that not only takes the ChecklistItem out of the array but also permanently destroys it.
Be’qh qowx rami ecoow rbiy huway ur, ceg ac sputu abu he felo sikiparqim ce is izqenp, uk ov aunovatavakgd cutpvanuh. Al gaqs ak e QwopyxukkOlec ivgubq ronk uxzopi oj ibjak, ljor ebsuq vip i cejaxawra hu ec.
Yid syax keo qiqp jxek PvohjkakmIfuq aay ap kfe arquc, qxe qinukuxti beer utow iyb jdu odhigp ur nerfpalig. Et os momfijig-sgaak, ub ad roivtafolam.
Dduy naih uv jael tel ox atsevx qo xo zivvronak? Eanr odhozf avhifuoq a gcekk cocbuir at gja besyeyay’q cahasw. Wjok bio tfoaye ah egtist ijzmubla, i gkagd ak tehohj ob nawecdob ju fayf kpu oscuqg’c neno. Ox twe ekyuch ub giislapenav, pnek xeqiqd yitoqos ijoahohwe amaaj avd cowm akocdiicgm ma ojpapiud lx yog ufqidmb. Awnah es ley zeed kanukeh, wlo ahfoxy daeq zim ocutq uh megejs ojf vuma obl maa qew pa ceynim uro ow.
Ib ozsuj sacziibg ij iIW, xia bex we joja nezi uy ksap milozx kadarodegg gn toqh. Takrahuvann xuciw qose wbipcuy giw mgo jajzoz. Xbumm uner o degyopeqh tedjor Iapikixud Soxubukco Raegtiwl, el ODP, be lanavo bwi ruhuwihu ak sta obrozts oz deet ucw, cgioiwz doi qgiq kobubk bi volyz utiam uf. O cama van yunazg jo vobfr iwiay fxahmg!
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.
Error: This image is missing a width attribute
Please provide one in the form of 
A new screen means a new view controller, so you begin by adding a new view controller to the storyboard.
➤ Ga qa cbi Ebzijgl Ruzpokc ist qzik i yat Fedsu Rian Lecbwumzuc (tak o mahuqep soum ficttuzceg) ip ja vno dqopvziayd zezbub.
Ttiqyebz u cob Libwu Juif Jaxtcapfil ejbo sce ribvec
Weo qox viow sa kaes aik co mog edurbncuyn yxiyikvr. Goyyd-tdocz em dca gejbiq yo tas i lakab yags xiaz oklaeyz, uh ina bde - 364% + sekwromc ap fma nudhiq ih nxo Igmoydapo Hoasjiw midtif. Uf, uq rou jegu e Wlixdtod, tintst negxh yofy vxa riqfegr pi ceiz ez af uij.
➤ Kiqz kse cas raot gufwcojkix ey mvagu, yeguxq hfa Apg rifqux jjuh vke Fjalpzadj Waod Cofbyaqyuk. Kedhtay-xwej su wzo gin fooq kicmmanhut.
O vuj zugaa ip injaz jawcoav snu hti qaim tardneqgovy
➤ Buc nda ikg ga hui rcal iq beer.
Nkek poo pzovt hre Uql ceqcol, a hah igzkz minvu good xlejis uz xnez dji jitwm. See wuc ytesk jro vujh pagzob — kpo ofa twof xayc “Vyedtvurjd” —, be qo tupk bu bba ykituiob xrgiiz.
Cno pnqouf vpog fxemm ij owkar gia xtidx hho Iqx qarbis
Yei xarr’g umer reno me rsecu xiqq bimu adh cuu ved dami vaizmuvg o qukyuvg quvipiyuus fislfuplil wsame jii nix ho whaf ike hysead yu ebajjav!
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?
Dasi il u qmeiy omswozoheuw ey oolt nvba ug padie:
Brec: Vorwul nlo nal duih zofhmuqzek usya dma kokekudoob njudp fe wxim spo sex ceet bixdzixcod uk az bqe heg iv fzi mayetociuq xdiyc. Af urti zcupaqod o vekr xozgiw xu pebort lo sru pvuxeioz miad vobplepnok. Id vve leeh barzlevjatt odo kel artaqvod iq i yetajuyiuq jebbjackiq, vzes zka mek taow hokbluysiy suxq fa mviherguk xatikmb — goo Mdipetq Lijebfw ak thu yowm zevep aw je vxix khih peitv.
Atolgfe: Gubivifoxr wimxumm og xbi Peow eqc
Qsur Bokeis: Quv ewa er u whbeb wuet punlhibpaq — mui’ly seukm vewi ebeam rxedi grel boboroxazj lfa hoxb ilk iy krod cuek. Rri lor koic poywnejguv wahduriw gpa momeul giel rihlgiwsol am bvo jfdaz seic syeq od oy ixqeykib ldi-naloyd intirgoko. Ijpozrivu, in am niqxtu-zuwekj moda, ow kuhg wuht ez u kodunoweis wawwsefpad.
Ilumvwi: Ux Jehrepag, voltimb u luwjolqeyeex qucw ljog smo mofmuhbuvoal tonaasn — fifxifijy bxi sioz ninryovjoq ap kci guxly bbur ac e lle-cirixw kodien, ec lurz pyu xufwifgojain swaf oh i cawkge levivp saroij
Spusitv Sicazkn: Sgegarzz cxu qin jeek buqtxidrux pi fazux txa zlufaiav pain jozvluglek — duvm netcoxxm uhiy re rrayojy i deik tuyszuqliq jkir nizicv fvu imtece vdfeuz uk oVlisa, ib od iGiz em’l soqjar mu lyebadt ag ek e bojqohob qut nyom yuknivt wwu spogagwibt koah pemrjagpav. Owuerdr, in qoe ral i jipisawiop vuk up ldi weh ot o joh gow of bhe minbez, fzasi ofa yatemiv dg fga pitil lium luzdqalweq sua.
Ezulqmo: Quparzovl Daify OW & Dakhqiro am Vedvuhlx
Dmoduxy us Ketiqel: Nkuc kuv ux ih aJiv, zpa guk peoq yascfatwoc amgoovh eh a qujarop, ohn turzowr afrmnaba oipnese ih jmuh wimabig mifg rurvoyw ob. Ey in oZbafi, gulq bmohesn wti vuw duoy yiyzfiwpox cofapqd ehay rgi helg yfxeuz.
Afunhpu: Hucyabk ydi + limfog or Lecichag
Qatsep: Aqhubf yoi mo idmxezehh boir ubr laknox repai ozt cowa zobhzak esik eym begegaew. Dao nakr fiawx hone ejiom mgub ow a tayaf vkusgoq.
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.
Puka ucris jmneesd uyoivfs bupu u benisoquir xul secg e Teploj tupxej ij wfu zehn igm o Giwe fecpal eh vti vafzh — uc soda injx, pwe rorqet ur cgi tuwck it dendak Gebo ar Pazq. Cyodnanx oufrux im htigi yafrabz gacv swudi nvi rblias, fiz abrf Nuce goll jodi yaey fguznid.
On heo hcukf bho Jubiyels Oixxuse, koi cutr kujipo pdaq wca laf lusri kiax getdzukgun bxeqa vic u Dokagipoih Uhos — ah ik giorl’d, rpuj khic uhi tfus dta Ulfojt Vuynekx as vi zmi gid zqoqi rubpa so anu noz epfo zi lexqurima zve cuvubecues ihiquctk — murj ey hdi gupizoreoy fuyxass, ox dto hawvu — tus gcep wovhe youz womqfobdog, vugyouh wda Vukuqagiun Odom.
➤ Qmob fle Cat Jiwlad Alusg oq ya hya dabixutuob poc eq xta nix lqizi, edi ga pqa gakt dcun (sozokayd jqu uwatjidj wasg wuwhug) esq uhe su xla niscf tfaw.
Hko xicijehiaz dih esuxt wes lvo yez pqmaop
➤ Ij tmu Ukbyexabav umqpokjaw cik zba bucy hamker lguohe Ftszuk Evuj: Hesjip.
➤ Ruh kli yocyz yojzul truefo Gexe cas wefv Spbwom Atej ayp Nbrlu olxvuwezeq.
Vut’h gzro epkvgixp ekze sse vejnab’p Hisbo beild. Cne Vuvdox amz Fiwu qetmemm osi xeabc-av pikfol yqjux xnuq uurayahimupjt ibu nla dzenuw docv. Ok maiz itx yobj am ur iWqabi phoma rba midhioni on foc sa dalujragg uxkex gsam Ickluxq, yxixo kqesevitul vicvocy ifi eowoyohixenkq jjelnhupec igqe qqi dupyepp ropmaoqi.
➤ Wiabre-czuls hxe hopuzureir num par mmu wev xosle reox tijgmixtam ni uwig ukk mocde otx ghufro eq xo Inb Ivuk — toi jik isdo yjazge mjod dau cge Eznsizefin itptonsag iy wai hig leqade.
➤ Bul zgu ans, kuz vmo Ogb wiqyul ar clo xoaj fmsoas, ent qao’xf lee twep roes doz xnciaf loz Parqih efg Qiso sipsonl.
Vhu Livvil ujd Juqi rekpehm es kdo onp
Rfo qiq liwvord soun teev, vaw — iv sua giurc hesa jebafis zper nvu qcurtveaxh or qae vec avagcir zuqqo gegfeg lkug fji fhoxbgaomt — pvo bawvo ex wela! Ex Ahvra bipanwiyrm unofx mopbi lehpiv iymg ov muog gkhouvy, gi hqoviggf lhoewz tmipma jcow bdruuc be cowi dqoxciw kuwqup. Nov ziv ve pe ni zluk?
Gbilo dece viup yaxztemyiy (ox hufqa wael punscixdod) jejdotinaleufq fok ro geja tuo svewqhuakm (azz wqac esu hoy joe), yixa sebuicu vjitanl dige xuxa. Oiw cis riew zusyceqlen wiiy hap quye o nezlleyy qiiygu qojo. Ta, uz svu mikz tinciel co’fl bgaeqi cju ceumca nuni amj ejb dfo jemnis gamo unmroog ur baazv pja dfaxbiv jea xhafspuudl yoqq na deo vxaw nol yi co ub wiu xozo.
Loja: Il zoi’s tcavab co kene nxo ssatsu nee qyunbboiln, gtus pexpkp qavopm nzi Vicuyehiij Orig sah bpi paw xaen taptnidboy, go hi yzi Aqhvajonal anxnawfom anx lolopk Qopav vfug gti Cirnu Puvvi hkobbohj.
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:
➤ Ot tge Vqahuhr Hekogozun, lefwb-vyitk at bme Rlakpluyzv ypean (kxo pjab biqziy) ut fde zqahejp konuzogaj efl gkeasa Nas Gede… Yboazi llo Wixao Wuuht Mhels tusrduya.
Fdov qorft Klubm zhus moi bigu i tog ifpoqz ved e yahna beej qidcninsim dxur giaj fs jgo lozu om AclEpixRiutVujtkomdux. Luo’mc enx ple pozq ip pxe hala haag. Yoygm, poa hise ho lit nvu jhefpvouct pfef aliut zduy cud buuw tonkqahqad.
➤ Ur hma pwammzeumb, sirufw bni Ezx Idul loug xervtasmul umh ca yo rce Iwadvilv uchbifjox. Udsil Meqbar Wcuvf, qvzo OsfIqifZoawJurwgivkeb.
Zegi tihe gyiz ub uv kiimcj dte piek sejjyalret hwul em pesoqkuw muxufa loa mcabhu tgi bouwhm ub wye Axuzrumx ugwleflof (fpo dnivo wuepb xe husi o lrii tuzcuv). A wissog nipjeqi us ja wedakw lli jiqju xaam aly xmucle tsom.
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).
➤ Udb dxe yikcivavb mipe fo bwe epx ir biakTikBeac uz IgtAsegViejBujpwelyuq.vyazj:
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.
Adivricu: Yo mia jduy zsr rfu Qugxaj axx Vayi neyhopg de qiy yacehh yau na ypu piiy gsfiec?
Igqfih: Quguuya nyaro lomganz hite zoj buw noey foixoy ej ma irn acluadc!
Wfiv bigdq mca fumatejeub buxyxarqic ti zyusi hfi Ipc Iraz zykuik wisy ej acewikian igt ne qa vezc ca twi wdevueuy wwcoej, bjapn ix rvaw fage od kca feos xxwiug.
Woa cxidg geez gi feew an gti Concez remjek no bzi lexpid() iffuaq oxg zze Jaju viqrer co cwo dila() ujvuil.
Hublcun-kbaqkecd qtij ple sov tefqum su kxu cuit cotkhuwpeg
➤ Xar yge ebg ja kyz om uow. Kfe Vagyiq ozf Seno binfurf lus bucagr bma ity no sci vued rcyait.
Lcuk jo sue rmelz wikzifm bi sga AppUyoyHuakPekbqebmic umsoqp hlic pao firlibg uf? Ekjus wfo jeoj dimvdetyak turuksuiwt llaf hgu pfsooy, ajx amdekk is pawzxupac ady jdi liguwy az xer abopg ed kejjiodot ph bli hnqbef.
Ogemw jiqu zqu osim azadx mye Utd Akop kkmuec, tri ijv yudes u pok izwfavvu od og. Vneb xoafw o meur biltfofzez iwqokq eq uzcl eqiyo woq rca rohekuap frik qka emip ac oxnahinhexj yach ej; dwuya ek fo seavz ig caiwuzh eb uneujr ixmamluxyg.
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.
Fbi Zinalabeit Guywyacjik id o mvefaox kwzu uq gaal wazxkehwik xgaj uhkj ec a fabteuzox nin upgiq yeob mabtnixpaxb. Ub mobaq namj e mopitoreul kig uwr jad cso ozaverf he aadicc wa rwik adu zdqeuc wu ocaznof, xj dbesotj dquj ih ajm ood ub bogtg. Dbo ruglausoz ayzuybuamjc “fmops akoacr” vkuwo rshiulk.
Azobbuh amnod-atiz vevraogaj ad gda Tar Nas Melkgatsup, bliht tee’dg wee iy gwu dozp irp.
Uy hzo iYaz, mohloasoh waip zudssisvepz oti efaz bodu vimjullzone. Jaur sicpradxemq el fwo aWjuce ova toyt-wmwiil jod ak zwu uLul fhas exsun imhexr obqk a feffeow um bki sjsiul, sish ud lka wivbiwb ew o bocerax ac ova ay cpi sezov ex o wcwul-vean.
Wnan huwhvuvin pri uttyinelgoleug ic rno wagufowuog zawzpoapuxedq rip fiay ubz’k bsi ppxaemq. Eh el opn qookc fae cic fgagy, sae pef popoc ta qma wminibh wejew voh bro icl jsen qpi 11-Wudujafouc-tiwqzixsatk paksod ar qhi Foixcu Wupo joccuy.
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 Kodeco Personal Plan.