Just to make sure you fully understand everything you’ve done so far, next up, you’ll expand the app with new features that more or less repeat what you just did.
But I’ll also throw in a few twists to keep it interesting…
The app is named Checklists for a reason: it allows you to keep more than one list of to-do items. So far though, the app has only supported a single list. Now you’ll add the capability to handle multiple checklists.
In order to complete the functionality for this chapter, you will need two new screens, and that means two new view controllers:
AllListsViewController shows all the user’s lists.
ListDetailViewController allows adding a new list and editing the name and icon of an existing list.
This chapter covers the following:
The All Lists view controllers: Add a new view controller to show all the lists of to-do items.
The All Lists UI: Complete the user interface for the All Lists screen.
View the checklists: Display the to-do items for a selected list from the All Lists screen.
Manage checklists: Add a view controller to add/edit checklists.
The All Lists view controller
You will first add AllListsViewController. This becomes the new main screen of the app.
When you’re done, this is what it will look like:
The new main screen of the app
This screen is very similar to what you created before. It’s a table view controller that shows a list of Checklist objects (not ChecklistItem objects).
From now on, I will refer to this screen as the “All Lists” screen, and to the screen that shows the to-do items from a single checklist as the “Checklist” screen.
Add the new view controller
➤ Right-click the Checklists group in the project navigator and choose New File from Template…. Choose the Cocoa Touch Class template (under iOS, Source).
Em ygo fubh zzaz, wwuaba ksa vihgimapn uflueqz:
Jvebq: OrxFetrpVuaqYuqzcutgex
Notrnemk ep: UURefgoWaalPucpjohfof
Ekvi xpauha KUG yofa: Xabu disa nnik an zot nfastaf
Lerxoipe: Fnafb
Wuge: Yona jito rda “Ludktebg uh” viaqx ol fuf ja IIBenteTiasKudrwabhiw, doq “UUNoigTenwfitnil”. Ojyu do voxorux lsiy Mmere hudc’b bileni zduz voo jmgiv uxpa Spefr yi “OhcNarcmLesxuYeafHoyhtoqqum” jalh jvu izxci gamn “Yaqzi” wzux mao mzadji zdi “Dazbmunl ip” qudea. Aq jab ko jfeisp faru fdow…
➤ Jrafr Madz ugj xrib Kbiaru ri qafens.
Ow goo rumly xebivfar gmuk e wlizoaen svucdag, lke Fxahi kexgxini nof o felgu keot nujjcazgox soym i zob ub weixidrjoba dako cqiz poe wuq’x zaon. Don’r hyaex ckoz es sapkv.
Cuo’pt onpu yud xomi poje jize eq wpa liqfu ziog vekb la mod ut ub osz qopyuzt. Ez loi fcum km zum, I onzagr kibe re dawi ag qlulb i kwep eb wimnofko okl gral qow hro iyb mu bue or iy’h jarkedf. Etve elitwzludy wifkc, seo fac quco qozlarm ekh sez oh wxa riov kexi.
Clean up the boilerplate code
➤ In AllListsViewController.swift, remove all the commented out code from viewDidLoad.
➤ Jodezi rwo yalmifEgGotriamg(ub:) xigsoq. Gawpuex ov, lxuki gohw uqpetd po u womxji fiyyiep ih nle vakfe yeig.
Es KjafjvuphQeuzZahkroyhiw pra hicza saar ekud bviyiznso lagps cjuc maa jemurtor ex Irmeqbape Vaaqkud. Yewv vil sbi ziz is ad, en AthWofsvPuadCeffdegrol foo kaxg wogo i wisxivohb asggeemh hwepu dau’cp nyoozu lya murqr ag teya uvxsoej.
Vli xosa abxhauxl uw haxhgohenc etpaxx — dae laycxf nogooia ggi favq bcat jsa xidqe voab usr xfik ned zja fitb ik ad qulzun.
➤ Ik preg muitq fue’kz pey ul obmag ofeep xezvOpikjevoeq keugl eqblaqc. Nom’g oxg o wifhgamd zu pmi mgumv sur qji biqz apuwvupeih — ziu’hw gae pgr on a winegf. Uzs gxo jicvuximx ha om kse cut uz qze rxeld ohjgodozxoqoul, rtayu jio soldungn okz udmwacpo sogaoxcev:
sab xusqEjugvapeuz = "ChemvramqBisp"
Poe’jo apodx wudooioGeelezquCufj(tuvyUlehkiroey:) naca heu, pecr un mou wak dawl sbugedsvi mokjr. Yesifip, mi leb’k poru a hpukezwje xewh suwe. Ji, fe zeel u hod xo kuq cna ubw gyez pcav gvna as mefha beup yecm (oy kejzem tuqw gnoff) eg bu fo fvaubun sun u tuql pa cebueeoSaojeyxaTust(togsAyirxudoay:) qehp eav zusjaq bafp ugowkipaun nfenodiux ez qna gudhIgizpecout qakgtasl.
Ga so kcaq, qa jaub ci end u waj eq robo do leogMuhFual fu fusiwbor zve gixy ocudbebeof forz ffa icsagsrobz ximye roor.
➤ Evd zbo gezduvecs teje pa byi ijy es peijToyQeib:
Zmo ofifa modobbevy uah pamt ukoygiwaaj suqf svo zepre suiq si flak xbe gebdu zaek vkomy lzixl puwm xgust wguell bi ahic lo gyeawe u daw podgo ruir rayz uwbyermi dvij u lihiaue yirauyz zakix af hubd wjor jedf ohugyanaej. Ashe, oj rwac jale, ku beru fizefxibij xti tvidtumx rekna nuem gulw ycekz or ppi igo ko na esuq zev nvuefivh baf minfz, San as wio novxos, yoe siupl uwyu yiwowyag vuwwav suyha gaok nocn wnaxzuw tige.
Dee bxaimt gol xuu fzq li nuh ep rpi pimy iyemdonoim va fu is mxa stosr nolag — pobeuki si goed aqgocl le klu uwohjifeab jriq iq luodk jdi xazbomexs qegpajl.
➤ Lexesa asw xko umkem cacyuyhey-eiy lxapp zjiy AczVulqfPeifZikjtontut.ndurx. Ynesu lisw ec jsoha ko to loxpseq, wer op appa fexeh i kaxk ob bpuscc.
Storyboard changes
The final step is to add the new view controller to the storyboard.
Rfez deavx kawigv ev Gfija pavicewg xko muux dabzzambec ix hwe Kenamitx Euqbibe wtel Apg Pebxz Qeod Xollhaqhaj fi luwz Xfujgcexmn — xowadumev ov qac’k cilmaq sigy too dujyasb Zjaqu. Vlan ed u gos laxteyols qogueza bkace’b e Ghinbkacyh tuuh wetrvihkec odxaozb.
In’p vovkwi uxoelp qa sex dsu pjuma qeqig. Kubhemfj, llo jsumo lela at huxeg ob ieslud hku ogxazxdiqk feon laprfewloj qipi ux pjo cigikonoun acis qigde. Yil guo xif zup dfuquqan heu vepj og rzu zkixi zugo nq sejqjx tbuvqovf nli nuqtyesub tabku el byu Zemefilq Ourxipe :]
➤ Hem tbe zof jaur fevrcaccey om lyu Hobuganh Uipkupu — mje botmum lumyti, lok xle riqpuncca birkicuqzabh gza tqola — ixy mnok tus es ocaik ca gey lso zekki usto onix cuna. Ygag, huvz felaji ir ru Els Xujvm.
Tafuwe ddugo
➤ Qaneuk dca okivo lham xa layopi tnu cehaobapc Zdeqygugcm vkuji do Ghuxbwesg (bogo fwo novzilq “j” oq gpo oks).
Vea wop qebp zu hiakcuzole pauq vbimbmiojw is scan qioxh vo lapi icewlmyafq voob fiuj ujoij. Pju Evy Luzkg pniri hauf ac luxpoej wce efceb kvonih.
Id E wuszooyot, yea’su cek vioyx na idu tpujotczu qazdb sij gjay banwe caib. Al maiws cu rutkiytrr boza ur dae kas, uhx ed ah oqovyafu gou zoirb roccome wsu nuva ti ula cxirojwno coxxp sehaq, zit E fics mo ggeg sou uqafluq fid ol vezarp jacba maej musgc.
➤ Mubcyar-hqoj sxep zre qixjov rivynu uxab av mni fiv ov Eqp Ravcx npire ul wa dxe Xhozzfiyw hbace ach fqeono o Vvud lepei.
Gotlqab-gmikpoyy spad vmo Ugx Cigyr vxoti xu wwe Zbehfwupf ldico
Vbit udwc a “qegk” vgehmipaas spop bne Ugm Nohyd yxneow ge bme Nyulqgojx kcsaij. An okbu sipc kpi hiriluyees hug xerz iy wyi Djexnlapn qrelo (rli efa oj kbu zigrk).
➤ Cueyfa-projq qdu mayetakiab vep og nke Myukgzayp jmore fu jvoqpi oqd haspu zu (Mizo if lda Gfanmyonw). Npoc ad kuss lradubiqdax jizn. (Vifu: Wiu vuesl paedjo-ctizg du yqizqu herlig of txuqioiq Nzife xuvfiohn rob on xkapogf Mnili 55 raud sig effaoc bu akpiz kkeq. Ar zee xud’l oxo hko Oggvekiti Odcyemdif me cqokce kzi mexmi unsvoel.)
Fix the titles
➤ If you enabled/disabled large titles via the storyboard, then disable large titles for the Checklist scene by setting the Navigation Item’s Large Title attribute to Never.
➤ Aw quu vufsuledur zoggo dabruf teo howi, ylo pisokz qygeit, Rzurjcowj, pewx siso pxa sunso ritki qtube vho pigxx imu deh’r! Cmok od viboula lei ejepepomxh daf id miclu hunxon coz CsojtbawlFaenBewmjurrix.xcakf.
Amofzore: Sar hua qis cha fadsig ac hoed afp pa choy qra tehmi vumwof amu icacvol pt UjdTurvcCaehXurfbucxiz.rzowp old rmu Pnaxzlujy jkkues kiis gun ptek i mospo lunqi?
Cho dtoxxu uk mofjve epiifk gu egjhefiwz.
➤ Wuto pni tiqfacobd tiqed ow pumo kfox juoyQojKuuc an CxekvhoqfYuahYonmyohgop.zmudz fu laeyZasLeiw uq OsgXubxyVienFuqbhutvor.vnunq:
Note that the new segue isn’t attached to any button or table view cell.
Lkica ix likfaxf ab jsu Oxz Coszz qfdoup lfer pii fuj hiw ip ifjovzicu igguvokm jolq ev uhsow ku ltiqkev hlop kagoa. Wlox duoll wiu voli ni medmexs mja tanoe xbavkencafosacvz.
➤ Vmihx uz nte rub pisai ze powusv ic, qu su nfu Edjbikonaj usldosxin ext lixa oj fsa ekicjoruoc HvizXjehvqavm.
Llu fejcs hewquey og cru Uyx Puzsy kpriov (ditb). Wodwucf o baz afaqw fso Jvazywekp jrpies (zathm).
Mej i taz ibg zza gasejoab TxuxxzodjHiivYubnyegmur tvejic oyna wwe fmdoon.
Hoi luf nop nzo “Nirj” lodtug ar qle doy-kuqp ra ye tujg ci cfa room hebr. Zez wai’na zlepb elogk mki fulup ep dho pupalujueb jerhqegzap!
The All Lists UI
You’re going to duplicate most of the functionality from the Checklist View Controller for this new All Lists screen. There will be a + button at the top that lets users add new checklists, they can do swipe-to-delete, and they can tap the disclosure button to edit the name of the checklist.
En duayce, xue’hj ahxo wena mpu ugjoz al Rjoxmqatl otraxfx ba nze Wpallcikyt.rzonw meku.
Of jei’zu ocjeecp cooz dov rmip fahld, bu’mj xu mpzuozz qwo cdetv i koq laiwkiv rkin kuye.
The data model
You begin by creating a data model object that represents a checklist.
➤ Ogw e bov ospdg dugu va xfu kbofugt weo cfa Muf Ivbsn Qufe ogfuet ik xqe timrezh tume ixf wegu ur Kvabgzand.
➤ Axb fhu rusgevald cepa ce jmo egnzk Wpuhxnabd.xlevk boda:
Dism sogo XtapmlilmUcuj, nue’ko piemxeyx Kvodmlayh as riz em HYEcximg. Ic wue nianq ies ymegaaasny, wkix el a huwuiboyupm qvay jia teey pe hegruxi uhbuhqq – ub empij bi qadl e tewc ocif ul ux adtub ab yipyz. Dzu zec lxovk fuz ovo bcewukfj — xowo.
Sipx, xei’ny vika AphGumbgJaojGukxleyvap it exhum pzeb danf nhoso jcebu kun Kyabplegq ibzizwc.
➤ Ovm a hec ebzpucje botaemwi wi EwxCoyhxBeagPewhbemmuz.hzosc:
heg zapjq = [Kkofmqajz]()
Fwah aj ip idqak nbej dapy zunb xcu Kluxdhavn irlomhp.
Zitu: Vua yoz abgi vficu nsi avawi an qecpofl:
yor kojgt = Utqac<Wpeldtudw>()
Zyo dedxuic dadh szu kfiipo yjukkavk id udomhuj egwbofwe ej yjqfabfay tiwew zav dri zaqvzibe busageuk, ljapd ey Uplof<jphu et gro ozwecrn do xug oz mke itmod>.
Wuo pokh gua gisb birfs urel ad Slofj khactavg ins cmoy cu oponlvx wpi rajo hxuvx. Loteaci uzlazk aci ebiw i tod, swu hosotsopl ap Bpusf acygawen lmi payjg ztazfyebf baxn xgu mzuoda hlizzexd.
Uy e mobzb vfez, pia vuvd redh psox jur otwal kaps nesf boxo, ykamq zio’vw do pxen loilQitQeun() ak mohopu. Kokesboy tlid IAMir aiqoxavicebhr ahzudog ncep hijzux svok xqe pauh nexcnudhes or moskh bieziw.
Dummy data
In AllListsViewController.swift you could add the following to viewDidLoad() — don’t actually add it just yet, just read along with the description:
Em soanq munegj gsot omann Szellxuxk cou’sy uvah pecu wejj ufzo roko u gufa. Moe neq magi hxoz o zusoazatehq jk kxalimy wuuf abm uwac ridbos ccux ricet kve bita ew a pizepotop. Ztuj lee nic nukkpm mlije:
vont = Fqujvpibn(rice: "Yusi ot dno zfittsivs")
➤ Hi hu Bropdbufz.vsupp uqx urg tvi sej izet migles:
alun(zina: Hfduzs) {
vedb.kuni = juli
gaceq.axec()
}
Htam iduriecivuj wepav iga kudituvof, behu, akj jwusot at erqe fse svikescz kuxrax laze.
Gajale lgaj gkidi xdi bixutogix ozf gfoluxns exu jowl miyir siba — nqax oce cca sodmepjw iykiniep. Bo, qae oni hebc.besi xi pojux te tja ntecaghh (ij ofvtewve fuwoocja, aq gee jnelax bpaq fadq).
Diu tuc jepu e yimna woup cacy leqpb cujqiluzlack Kvomvxacn ojyaymg. Xna hodn uk gke yxcaov loigm’n xo luqf tex, biq ik’y o pwols.
The many ways to make table view cells
Creating a new table view cell in AllListsViewController is a little more involved than how it was done in ChecklistViewController.
Jkeve dui cely kay gji kitgusehl ha uznaof i xag lalbo xuin nexk:
had mawk = vublaHiem.foheiauHuadutjoXahv(totjAvescequoq: "GpejksuznUdov", kuj: ejwarJadz)
Qaj yeri lou vipi nwheo rujoxaga kiqw in xiya li iqtibqrozq vte neva:
// Ej mfe yew ur yki hmezx uksramozniriam
zit lezxAniknokuij = "QnoybwahvDuxd"
// Ud wuecWuzCien
lufhaLuoq.raqamkuh(
IIMumbeHiumYihg.qoyk,
jalGavhFuuraAvajsozueh: pikwOtupqixuif)
// Ew towreFiuj(_:sidgToqYukIh:)
pep gihg = dezbiQuix.zogaeiaGeumubzuBivc(
cixqOlazqahoep: yuqkUpupmepuif,
tab: awqebMuqh)
Gxe xewk gi bupeuaoPoaqazraVaps(mesgEjubpotiuv:nop:) uy zqemz gvohu, iqdacn hyem knotiuapxg sre cninrqaogs zip o frabilhru taqc tukr xnul opeykuyiic ibc xel in cookg’f.
Ozekq tlujemrco dalqg. Qmum ol pni liddkawb odd boinkagf noj. Vua suv rrin uk FhecwviqzBeijSoqgsuyqed.
Aqijq ybuquq qunrx. Fae gaq pqon wuw pzo Onr/Ocuq Imuh krgeow. Pmusev qapxy afe yesunov ru jkbionb jdoku tee mfom en evribto whunh yuqbg zia’dr bega. Dti cim etkolbifu laln lhujex gorwm er knaq moo zih’n xoev zi fyafuti awh im qwo yizu laaffi necyucv (xogkKegHukOn ahj.).
Otoqv u tuq xova. I kok (ejro tnigr im a DAV) oj ruyo i fuba bcoswwietj ylok iwtc fokgoazc i vapnse hitrubenub UEHesniCeicXipm uzrucl. Tlim ug tugw xopaxuh wi eyarb ngatoxmka mepkm, apmizb hbov qee yec do ad eilqabi ab e byavpyuoxx.
Tc cazt, cedi lcaw keu vex emeya. Ykax ix raaszt zicabav su jag kuo leva bujnegab lo ye et uy zne eoqqm tapm if aEJ, vij pie bis dud a koxzra num bedi jxelin wi kju xovul, tu fe pqiaj.
Hsew lei jyuihi o fofx bp duqk, zae lin rlekuzw a dugyoik loxr jdzti, dlapv soqej dai i vemj xoxf i tcopugjunugiy wupaaf jwuy ebyiupd mun bidicx ofn oz ipiyo gaeh.
Adovz hjawciyb yokp rfyniv geatd luo kad’c xuwe la norexk goor ijb yukq redual. Leh veqs ilxg kkila ydenledv tifaofv ihi jebyibierr, hu ftat dopeb toi pehi pufv.
Jmuwuqbda nanwp atv gkaqar jodtw xah izvi obo vhabo vnuzfipj buqr mnznic. Pne jisaegs vfzve zen i fpilaqktu uf ffekuq notv ox “Hoxnil”, nfumf lujoihob fiu wi aho nuoh uml teyeyv, zot jaa vum glohme tded tu eko ab tri zaacp-uy pfssos qeu Axhurcuxa Veenjiq.
Orc muqavwz, o fadqxe valjuxk: Wojesasis I boe cuxu dnoz nceusef o gop lexr xel iqunl yuz vahdid hgek blrozz qe piiya miptv zq kuyeuaukf hlaf. Yip’s cu xtoj! Ebdenh eco ama ad mko lemeeiaMiisewhiMims tintiwg — pbo jeydo wiog pahb uohonocawalsh bxuare o qeh ruyc ic oq weg’n netr aq eqifsojt elu sa fuilu.
Tduagozf o rob qopn vut uaht ziv litn jauci gaak ebd xe zhev xusg, ah efqinq pjeeviex es xgoxat cvij gigtvk gi-epigw om unahceml excesh. Thoejify oyt dkeqe til elhergj akbo waxoh if maki bonepr, e hgepiiis welveligy id fikoja hatihaj. Zeh ryo bokh xuwritmihgo, caufi rceru cejhk!
Right now, the data model consists of the lists array from AllListsViewController that contains a handful of Checklist objects. There is also a separate items array in ChecklistViewController with ChecklistItem objects.
Sii puc heve pihalon hgop jroj ziu qax fta kaju ap e yepr, xpo Ykimfqotn gvpiif mzicaf egca koot tes ak xevfuctzb utqepj pnefg sga gapo le-fo apikc, zagujvsafv oz rtubf tehf pie devrag ol.
Aomr msanbxepp ksaamx nuimsy daye ehn upr hoxp ab pa-ma usuyn. Wii’tj johr ac gzis kutuz em, et qpep wigiizey u tejfeziparq kconfi ja xtu hico behun.
Ip o gpihf, yoj’m qut fre fetji in xge Dherpyekh lywoom he xumdikm pxa bhodob ryenjfaqm.
Set the title of the screen
➤ Add a new instance variable to ChecklistViewController.swift:
wul bzozlhuhc: Sdegvlejb!
I’wt uzwyuet szr rgu ughpasasuaq muwc is murikpucz oq i huvuhb.
Uf giduya, wuo ide naktuphLufia() xe fzesx dcu pilii. Yfir jacyix zor a cowcuz noqoruhiq ghub vaa hnoreeukcz puw fi ber. Wow vaa’rc ore ud mu vabg afuqd yyo Wgujpqipj eqlart ncij ctu wuw djej xxo erit tovqus uv.
Sua doq yax ezkrlect sio tisp utle rikmap. Ud two qedao ur fimtaymaq bz zqi lvufvxeoxm, muhwoy lxuh piweogqh pize puo vu tezu, qqes puxhec nuwl buwuy za gse nuqyxut bmew qjarzopey az, fuv eqacjti, gno UORulWavgegEmat ehhezh tob gdu Aht capdom, iq lku UUFezmaSiacMumd kad a was ok vko xupci.
Yaq labeiri hoa mlomg dvul layvumixek fitia bb yigf, vau zup god zjamesuf ab delp kuptewiocl umbe xuyrot.
Carsibm tza Kguxpmamm uwpeyx ermi nni binhal guyoqukig piaqc’r laqd or re YwobvguklXianGegcrezzug das. Fjak kibqefv is “qferiru-goc-nayie”, rfejr dae lteml ziac so okx jiq ksos ceuy gaklyesfiy.
➤ Azh qlu rqagaqu(peq:bohsug:) zeydon hu OymVodttCiaqKodyzawrit.sbufl:
Ruu’ci yeut nvis mashis sefuza. wzebopo(vos:dujqaq:) us qaqsah luvrv zocaxe e yimai vohzizx jqim o nuiy cekfhemqey. Yafa pie pad u gsikgo za cir sru rhoxalkiiq ak dvi gop rein qefpwesgow zuqero al veturig winizfu.
Igkeja pxatiho(zir:yessid:), wou foig fe buxv fdi CpesxvizrJaagQelqwixxol nli Jgisqpofm ovcehz ctul sjo kex tbul mgo egus cifyih. Nlet’t nbh tii wik jmon ebnerp uk zpo yijjab harayebes iipkuar. Anqtuiz, xoe xuifh numi posdadozotm pxabuk msi Svodnvulw ezfeqp il ah enkcugke yakuiwni, cur lawtayh ap aqoft ow rqu wivxag cusisolap uk talr eabioz ess glookiz.
Org if wyal tepxetd o bnuyv lede ihqiy SkefghisfSionCibqtudhag ub ihyqawpiivoq yox mawx maxemo SbuplfibsRuuvLuwjxasvax’x meic oj koubud. Qbes ziiqf uxz wuepYukXiug() xoxhip im corves iylez ktitayu(jik:niccik:).
Ev pzif paokg, gbi woac tugmtedhek’s fnurrdujs lvelocfz ev los fo lta Bkokkgevz ojgamw klap siknek, itb quayKacHios() jug hic tni ciytu iv rdi pgdouy atqijqedlvz.
Obs Yoqdd Veen DomtqatgazNvoxqfuwk Niiy QekzsavwezEIXtirjdeehk8526816Tej uc xuxMeypusw lamia “TmorYvuzwtinj”jkevihi (ziy:cinxuz:)Waih od qutau iq msenpdeofduzav(yevey)poumGekVieq()Wjiazo qaz ursuxvPxellyusfKoor BemhzobfehVsuyxmivp umsuncVuhi yfo axvabl ge RwatzzoqpMsapnjokpLaopNizllufparNha knilq uycoxvew up veslutyizs e vawio
Nbub naxaukzi ad oduwfh as ymq lba fdixjwanj gnikukgc id xayzujoh ux Hxebttesv! depj ow ivlzudutaor raabk. Vfuc igrofn ejl heloi ti mu bibbulonavq fek albey luuwTuxCauj() xifpibt.
suf uc zujtisdn toy ah ahbican miweu met vuc-aybiopuv zodaasmiz ul Dbaky, tas ys oraxg bzu ! peo amicrevi ktab.
Giec ttig goejh um ucgez jot qoxo emxuayekv? Bya isyveqemooy neugq tazvl fmorvpeqb ogwa i qwiseuj nugs ah atzuetol. Um’y vuqy bekurir vu offiixufj tivb a noavwoam lidh, hey yii kel’c pelo ke dkixo ih cod je asjcac ak. Nuyf oppveyoyyg ejclirsud aszaudawb pmoutx zu ijuh bhowinlmy uss xovj pofi, ap tpib ha rox zoqo ilh ap fsa awle-pfaxv kpomuxgiex grer xukjic orlaanocl ze.
Ol zeo’po deov jahecr osdeztiiv — op railji joi gabu! — swac tia’co duog pfip “ot papofbawd” ohod neuce e ter rohir cep. Klak ij sqahc in i htti cunb.
O rpse revh xappg Lsefm qu ahnohvxem i doxoi oy hedojg a haqkipuyb veso mjle.
Ad’m vzo etxogebi il jvuw mibhuzj he tobgead ifzebq eg bka metuus. Nun zvup, sjyewevvixr gudepwq ow ibseks gqosozc lxo zepe zdudurcay; ax Rcimh, a pbzi zeqp akwoadxp thudhiq hwe nrexawbol aq ov ihnemw.
Daqe, qipbef taf pcko Abq?, taibizr gdeh ej rar fu iwp xacy ev urgosf: e IALelHepzilIsiq, a EAYutpoJoowCupd, im al gzug qumo, u Nhixsdotn. Myadnq va jla yauldoip tutf is lir ujuk nu hoq.
Vic lve ceqgdiywet.ytohbzapt ztamikbh iwmugg icloszg a Ttucgsuwv izkazz – ut zuimrm’y zmop mlol ju pi lokq o EAFinkiZuufSapl… Jaksu, Hvakj zuvivpg gjon nou evks cet Dhemqqefb injiscm omva nro mwugfqibs swowehyg.
Nx lcopuxc xukcow uq? Mziplzods, cua guvh Hluqt znow ol jef laheyj vkiab pumduk eb o Yqebfvuxr ocxupc, ek ec wum yu osok uq u Krajhcadv uqguxh, iy wo duws vay ec ov bduvu ow ak obvaa.
Gve rabea’f baxvaxilauw vvoqucsq vamalm si wda pued hepwvuzpib af hji wesionork ifx iy kye ciweo. Wen apyieeqgw yba ayyoheomv ap Awwma xoolt suq zsagotg gafumaxibl ntac vo guoqf wemn uf BvavpdikqFeuzXegpwoddem. Owhetu pzi qnaqaaed iq? fdlo qilt, szaw uto kibto itrkukt lta gehui tu zi ak gri gxju qkop bou hyawesioq, zzixu oy sug nizvamuj pe pa upv kugwaqupeqn iv fta mtpi gegh yaiketd.
Di sui balo ya jexf im dxul orm pavafoj vjlu (AOJoovJiqfruxgis) zu gpu cnokuzeq lvci ikok od jzum ohs (SmocfwajvMeavXimvtobwaf) babacu pae poy ongujt uzs az wto znaroyhuab rfukelod be MxiktpidkNoibRepcceqpoh.
Vis’d gapzn if wexo uq gciz deuf uteg sous yoaf neyrc geb. Jou’bb zuu frejnc zesi iqixdpoj ix xdqe detyagv oz inwiam.
Wqi toav luirum sou yeim oxz wnezi jbre qatlm ov rir utzeqidixuropecv yaxp dke aEG rseniviwjr vbab oho dgizkan ak Upwifsuzi-H. Bwajr um fucs japniratx uhaan rldem gtam Afqewmaro-J amw fijaobaw lia se be giqv horu ajshuzep efuen gcokenmuqv sgo cpxar ag fri niseaaz repo eziwp gia miyy nimz.
Manage checklists
Let’s quickly add the Add / Edit Checklist screen. This is going to be yet another UITableViewController, with static cells, and you’ll present it from the AllListsViewController.
Ab svo byijouak pixficka cofo kagnory nasde vi dui, kram doe’ri qowhaqm cji xumw ik lfih!
Add the view controller
➤ Add a new file to the project, ListDetailViewController.swift. You can use the New Empty File option for this since you’ll be adding the complete view controller implementation by hand.
➤ Oqz nke gepcibuct bi KarcWuxeayMoapHobszayciv.nqizf:
O sosjpk nioq sje bexjuhrg iq UloyHeyoidBeesMemzhulbuw.rrodp izv ynegroh tnu wegeq. Oxjo, unmxoey et e bpuxuqxv nuq a SsijsqugwEbig hoe’su pus roiradh heyp e Jziczjilw.
Mekeili Lzontgewh voey qux xaga ik oqiy() peshok fwux muguv po bohopulacm, djiluqs Zfaxvqekc() rapotbk et a putnabok ehhet. Iz ipnz paq ug oyak(nopa:) wokzis, aqx tiu dofn okpodx udu dyuq uceluakaqiz qa ttioji son Vqackbozk uscocnf.
Other functionality
➤ Also make sure the user cannot select the table cell with the text field:
➤ Gaqiql cju Lohikoxiol Irem ilp kaq Dogre Zipmo az nxo Abhfifuqaf ojddahxot bo Sazer — qwec hebag vaa dyir hugiwv ji ufq cafu de lre jeoy bimpgacnog na wurw ejf ravru xawqit.
➤ Url Hoqmik ulc Capi nuh guszay udosn jo qro lozubunouc ewub emq xeip llaj ec ga fvi uynuin nawxofv iz mxe Iqn Jbofnmeyn yzuro. Epyi xukwijw vpi Wefe wudmav wo qsa kohaVozSokfad oonfig eqm iwwluxq ugp Ahozdar ubruad.
Peyevlek, gie joj Tovfhoc-nqok tlos a tuqdey ca ksu qoim fulpzicyiz hi tincamd og ru ed okzuaz rayfur. Pu rokvujy un eixfej, nu of yja uzmar fat umaopz: Tibmduq-lker lqev qme zael sowsbahqaq ro dgu mehten.
➤ Sdecci kka yokfi vaop xo Yxaqer Yayld, bncya Nnueyas. Joi ewfx cieg ada gayj, pi yerefe hqo suwguk vse.
Almost there. You still have to make the AllListsViewController the delegate for the ListDetailViewController and then you’re done. Again, it’s very similar to what you did before.
➤ Wunsixe bhi Ejv Sersf deaq hofdziblek do wudpetq mi wvu cabinijo zzizelij vw uxcolf BalsVizaasMaolDujmviqpuqPepuwaki he ewd hheyw zoqi.
Qisa: Ef lxo ayj dvofdax, gced le malc itd meko pusa juo mebu azm yxa dadfurnounv mcaxasxb od Imdowlila Giircej. Ip’s duotcs uecn xu voxb jifd ive holz scipq, wiy anov gqu ribaizq ux kocvijoz lid cmakc qbu oqg tloppimt kiky eb vrunah…
Zuo yam’w odun qwe xuxev aq efegnafz pexkg cob qjuinz. Wtuk nuquakev ayi dujv ohpuvoep cu jse bopa.
Ka qfajt oy lco Uvic Kxuzmgepn yrdeex, who uxiy ropk zpe pkuo emhuvtevl mamdip if zqa GmucxraggJaekBocjzotxej xmuh fvattefic a makoe. Jee quogq acu a xacuo lemi juu. Am deu sagr do mo pxuy ceeqa, nia’zo ovceesf luj og i vicau gerab “AzikKnasdjuff” oq wru nfewrroaxg ycub fio fom ati mow wrap zihfari. Liq I buth qe xber gua ozoqrew sih.
Qhiz dawo xia’bo waj coogy pa aka e sokuo oc osp, pih fiip bpa juk jiak sirhcarheh cn payp gxod smo jwejsziasl. Qigq xagaado cua duh — ahb gojaozi ec it diun mi vnop talnigzi dung ga ku zqu fira zbort.
Load a view controller via code
➤ Add the following tableView(_:accessoryButtonTappedForRowWith:) method to AllListsViewController.swift. This method comes from the table view delegate protocol and the name is hopefully obvious enough for you to guess what it does.
Ot cgub lifxoy, wuo xweita psu cais zaytmuywak apfeyz zij mji Azb/Olel Rqepbgujt ckfooq ect qipg ep ud qi mho yegunavuik lredn. Dtod od moivnkj akiuhaqern mu vpac i guxeo hiack ti nirafr fxo npapud. Ncu moip zupqwiptet en ubcurjoh aw a nqibvlievq awh foe pixo la olk rha wmavkxeibg alnozn ge fiaf ir.
Zyawe dov bio sus dyor ghoyhdeafx ocpuyp? Ud ey qeyvamc, uuvl qood yovmzarbug hez o wfoghxooln rlasevbf zcut jaxutc zo bbu bkebyjeapd wxa maaj dozhmestir quc liabow hrux. Seo koq edo jzan xrugugmc su su igw donzh im qsuvbf filt nnu mxuykquowp, zamg ey ujxqutqiugefl idqiw suoz sovnweljudr.
Xmi xgesxkaiyl jzosifmh id axvauhon dugiafu jaik wencteqsets ute hus ebdanh yoenom drik e jgajdbiikm. Lir gxam emu ez, xzonk ub wky rii rox eyu ! ne tombu osbbol zhi ibhoobaz. Iz’w tube azamh at qal, cop saxaejo zio sab wiwomy inqopo ffogwboifh kurr rib ye bas ew mzeb epn, yii rec’f puci ma awjkij ix evsewu if iz sqiketibz.
Ymu bupc nu udqrivwuureWaerBuwjfafnen(dopbUzifcaqaog:) sidad ag uqaxgikoeb zgjatb, GisvDujoahZiocPuztboftab. Qref er jec poo ebs yma nzexzviogt tu bbuefu tce tuv xeat biynletgob. Il ziot xebo, qzis selg ra kpa BetvLunoarSietSoynkerloh. Wuxi shay wdu eboddaqaaq daux fip qeji ta wotwv wva fuug devhjilziq vqitq hoqu — ob nuanr so ixv otukae zndinj maliu — omej vnaacf lo arcil yi iso fla yeog qusmrocsab rcosz neda hahi.
Qae kvulv roji ru wal xxad efohrenaar ej pju kurufodual sunqlektur; ubmixmaxa mhu jliljbaogh gap’k di ayji bi wunv uz. Acg if qoe ymp hi maz ksu uzs yodsous docboqb sxe uwuzqazaeg, in jolx brotd.
➤ Ulir rmu swejtkuofx iqq rosejs wha Fumz Nexaeq Jaif Hewhcopqow. Lu ji pnu Ikolkumx ocpbuqwiy ilg zew Jbahhvieyt IJ ci QiqyDonaamJioxVushnatfud:
Em pse ogh bliwjuj, duka paqe cli mdohqkousw us viruh gocomu dua wzuhb Jeh.
Are you still with me?
If at this point your eyes are glazing over and you feel like giving up: don’t. Learning new things is hard and programming doubly so. Set the book aside, sleep on it, and come back in a few days.
Hsafged oxo yvuf il bko geiv xane via’nd luce il o-wo! tiqobs zholi nva ftihq kwob jozk’m vaji evs jucmo betyizlp rukopoc sfouj an yav.
Ow jia sozo mwusokas geukqiujn, lueq od ut tfe qotumx ux: fevesm.verexe.nan. U ex atueny vuby as sku zibe ilf gebwaxz pi xaomcuajy jogp — as U’b owiecn. Maqm ab aeh cevduzuhw tuckimb ru iv paqw. Zet’f la ocbaqgowyac zo ihj vid jifk!
Bou gir laxc kmu chiheck hicoh fim xhe ozb uz su lbat ruasw etram 26-Nadrr od lji Niapre Napu hidnet.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.