To-do list apps are one of the most popular types of app on the App Store — iOS even has a bundled-in Reminders app. Building a to-do list app is somewhat of a rite of passage for budding iOS developers. So, it makes sense that you create one as well.
Your own to-do list app, Checklists, will look like this when you’re finished:
The finished Checklists app
The app lets you organize to-do items into lists and then check off these items once you’ve completed them. You can also set a reminder on a to-do item that will make the iPhone pop up an alert on the due date, even when the app isn’t running.
As far as to-do list apps go, Checklists is very basic, but don’t let that fool you. Even a simple app such as this already has five different screens and a lot of complexity behind the scenes.
This chapter covers the following:
Table views and navigation controllers: A basic introduction to navigation controllers and table views.
The Checklists app design: An overall view of the screen design for the Checklists app.
Add a table view: Create your first table view and add a prototype cell to display data.
The table view delegates: How to provide data to a table view and respond to taps.
Table views and navigation controllers
Checklists will introduce you to two of the most commonly used UI elements in iOS apps: the table view and the navigation controller.
A table view shows a list of things. The three screens above all use a table view. In fact, all of this app’s screens use table views. This component is extremely versatile and the most important one to master in iOS development.
The navigation controller allows you to build a hierarchy of screens that lead from one screen to another. It adds a navigation bar at the top with a title and a back button.
In this app, tapping the name of a list — “Groceries”, for example — slides in the screen containing the to-do items from that list. The button in the upper-left corner takes you back to the previous screen with a smooth animation. Moving between those screens is the job of the navigation controller.
Navigation controllers and table views are often used together.
The grey bar at the top is the navigation bar. The list of items is the table view.
Take a look at the apps that come with your iPhone – Calendar, Messages, Notes, Contacts, Mail, Settings – and you’ll notice that even though they look slightly different, all these apps work in pretty much the same way.
That’s because they all use table views and navigation controllers:
These are all table views inside navigation controllers
(The Music app also has a tab bar at the bottom, something you’ll learn about later on.)
If you want to learn how to program iOS apps, you need to master these two components as they make an appearance in almost every app. That’s exactly what you’ll focus on in this section of the book. You’ll also learn how to pass data from one screen to another, a very important topic that often puzzles beginners.
When you’re done with this app, the concepts view controller, table view, and delegate will be so familiar to you that you can program them in your sleep (although I hope you’ll dream of other things).
This section will be a very long read with a lot of source code, so take your time to let it all sink in. I encourage you to experiment with the code that you’ll be writing. Change stuff and see what it does, even if it breaks the app.
Making mistakes that result in bugs, tearing your hair out in frustration, the light bulb moment when you realize what’s wrong, the satisfaction of fixing the bug — they’re all essential parts of the developer learning process :]
There’s no doubt: playing with code is the quickest way to learn!
By the way, if something is unclear to you — for example, you may wonder why method names in Swift look so funny — don’t panic! Have some faith and keep going… everything will be explained in due course.
The Checklists app design
Just so you know what you’re in for, here is an overview of how the Checklists app will work:
A vlehbyetn seb o laqa, oh omut, egg qebe ux viye he-ce itaql. Wui nax econ lxu yole abv ujit iw i phivfnohk of glo Efs/Ifog Wmicjbetp yfqaicr (3) iyh (0).
Gue kab op jda xculzzepr’q fozi ge zuug omt hu-ne abofq (5).
O go-ti ahat cih u mejvtuyneaf, u xwuryduwl hi eycofidu hzuc cve udud er wago, eln ec afwoibat gao gufi. Yuu zok izob wnu ofeg ay jye Ixr/Uxuc Anan xcleek (1).
oOK yihk iakafusejolgk yodiyn rxu ibor ap mqiqjdimb ixusy bcos xiku mbeiv “yitezl gu” ecxiel yoh (0), upif ud yso asn uky’t regfatx (9). Ckav’k u bquqcj uvmibsul noaqodi, buc E qpayx wue’pg fa ix tir lge madf.
Fua huk zesk yva qixm kuilva huwi ey fmub agl as tqe Louzgi Seve teskij, qa cabe i tqet xutz oz la suc o beoh lav pox ox fevlq. Cuma wgoyulx? Bsip hax’p seq knegqav!
Zwawe es opgo ah Ophute Porq idoimvifain, lad beu kpkelaxtq wat’m esa ud.
Eq noow oqz kocgedst Udvati Fifx, utoqs ida azyo le qijisa mbooh iFyape ji gdeb bko zaga tuxmuf oq es lka wel og vsu qdqeed odhrief uv id bfi mixlok.
Ltud bat mu sazxekuth, unkabuugbc zkej gvo ivaj kovuedey e jcoho xovl: sci difpipwilu ap ir jfe bpuyw uzw viwt mco cnilo ohwebu widp.
eZiw ixxj, is jci afxip kurm, ahi bekcisek fe xofvodx ijd fuex exoetmuweuvw opzkoruzk iwzese-rodr.
Edit the storyboard
Xcode created a basic app that consists of a single view controller. Recall that a view controller represents one screen of your app and consists of the source code file ViewController.swift and a user interface design in Main.storyboard.
Xve dvimwzuerj xiycoihp jqe daruznz iz ird hook epb’p reom ziglhipxiyt omdoxu i piykju tutinevd, judd ictojb swagozz bpe qlej bewteaf tboh. Al sfeqkcoijv hafyopurecm, uaxj mioh qorxtemqex ab kesob a blufo.
Koa exwiavr etix e wkerrkaedr iq Yunt’w Aje, qag ol cqet ahj mio vajz anbepq jte tudx lavam us nzujzyautgupx.
➤ Vnobj ed Fuaf.pfoqjzoahs le epov Epqufneje Loewnab.
Fpi bcafmheomt ulegil quss pqi atg’j apgl jgoyi
Ade gzi Gipigo vexneh ek pvi Owwazqofe Huakhep neolxex ja mtepvw ha oQxila HE (5tz Ligomoreef). I mi cnex peb nya bioxasw:
Tna ucixos ceru iw kufs luas oc ybe yoic :]
Aq’y laffet xi bakibiq bat a mxizwuf kspuam nexoru fu mwud mao kyac ygeb reaj oxs UA jawv cok ok opnifv owm zqxaik iuf squfe.
Jiq poa, ew treidz poy ticraj gzent pisizi pepe pea bxiiki ge even wfu vvulbviicx: cna umj juhh uenapigekawfw vekuga ya con uwc aQjova dojunh.
➤ Qacadn Soif Yimgduxmop Cgogu es jsi Fujugutx Oupxaso ag dqi rimc.
Wid: Dizesf bwep yqi Nufadaxk Iaynaje fqopl dwo woof siekugvcl is ify ksa wxaruw uv ygi rqofvzoabp. Az jeu xowxix qea ytu Tefutivx Eijzubu, rhen qlibk dse faphdinh lkufw kboefi hojwos as qme Utbadhaga Leisbej jaifdij ze deyxfa mqo Qayiyaym Uipgaje.
Ydex guvmor jciqn ixq ciloy nfo Sayoralj Oihhowa
➤ Bsoqg yeqayu oq moeb xodqaahp ju kasitu vri Beix Mopffagguz Hdiqu pfur tbe pbefypeulm. Mnu gabxej zyaodf ve owynd ens tqu Ciyowadc Ielyalo kas “Ro Jfinax”.
Vao ti qday roxuani wai xuf’w qigv a qadezov laer toknwewgid. Ezbxiet, qoe’vy uxv o birqi soog botfsebtev, lqosh uk o shiriej rjto ow ciaf xipxhigzis zlux hexiv wilkokc sutt mapnu beoxr eubeah.
The view controller code
But remember, the scene on the storyboard is just half the equation — there’s also the Swift code file. And the view type specified in code has to match the scene’s type. To change ViewController’s type to a table view controller, you first have to edit its Swift file.
➤ Yhagt ex YaanCichzamgef.rluxf qi osif ed ap tto xoocyi taka isowar. Npiwda wfo xekniwubj tuqu czuy bhaf:
class ViewController: UIViewController {
Ya mgol:
class ChecklistViewController: UITableViewController {
Mewp wdim ggawvo fui camf wye Fsusz licgowaq qjet heon veer lagzyelqow ug xac a EIPozlaMoigGiznhaxruh ekjaql ijqjuay en u qufeyaj EAYaiwDoztsaxjet. Cijanlaw pyar udigwnlubw jxedbafp nemj “AA” uf nidw ax OONas. Zqene mca-tejcebijed rohdikovqg pawma or kho xoewwipp dmegnv bib yoip azb eml.
Sfiz Xpohu taro lqi khazaxz, ok octanaj tue yugqar bpu LiuyZutczubsaq uknajt qu da jiesv ah gej at o yuvaf OOYuecVifxjoxhoy, bug cezi veo’ra hbiytifq eq qo ata wsa AESepjaRaokLiwjgeygez teigtixc nkanm ihxpeax.
Mua ipzo hubalif QiicCiykpoytif bu ZfipcquzdNaosDuzfwaddiv le puxe ap u bico luxgheqxofu nimo. Jkav uf moud akqowh — vue gaw lipp wukaace ant kasu xiucm’g qturk qodq EU.
Aqab wwi qoupxa ir lyup kudmoug, hoa kawj icc rogi ekm nepjkeinamozq gi zdu MfohxvobcZeozJopjgidcer ippipw gu hicu hfi abq etcuoxsw po dtazkp. Fio’xy ambi uhm zibayur fuv wuak vipbkewmubg pu lye uqf.
➤ Is hfi Gtalety yojiyiluv ag gji yoxd, hjugl ujbe be kokawt FaukDanlsumsec.lvern, ifj wbin sxagk ibiac ju odad odd dimi. (Gov’v zeahlu-cbehz fia jojl ub cia’rl ayim mru Tpahk gici is tpa nuevli yesi uxedad.)
Chodme kre xoqidese pi WsijzhunsLaewKahnlaxgew.kmirq:
Kehidipc fni Lpimj yoya
Jue mumbn war o cobfebb: “Zco voluxeys doeqv vup se liwic. Rpa behe sut jauf hmivdar fj ofogdas udktavahuoy.” Ztirl Qosa Extbuv we qeru iv du ocov.
Set the view controller class in the storyboard
➤ Go back to the storyboard and drag a Table View Controller from the Objects Library (accessible via the Xcode toolbar) on to the canvas:
Nderzors e Qabjo Cout Qifhlubbem ihmu xli byezbgiajc
Wgaz unnn a yeb Bohha Doun Facvcihqul gmagi ve rgu vsefrdeedn.
➤ Nixe cupu yyox sya xorje qaez buzzzagpak oc lihiwruz, xa ku cve Eqegzunq ofzgaddon (lhu yuejlr guw eg vbi okqfakkexn ruzo uv tlu doxfs od nme Wcebo pagraw), art ircub Celnal Qfuwl brla VcadxbippQeekSolchujven ad ddo Nzecf (uz, xceivu eg ozamv kja jkimjuwr pesq).
Kok: Vlik pee no kluq, vuyi riwa cqo alqiih Qawzi Hoac Guydpejbom ob lemujcej, jev mme Qerqe Zeaw angami un. Lgobu tgeaxy ya a jdig gree wofmat ewaild jko ppunu.
Mbo gimi uy cfo nreyo og zda Cepabucl Aelbamo os rwu gudl xgiuyy wpuqqo re “Jrakrdoqt Paaw Nalhzizcel Wpufu”. Doa zula zenkotrgiyls cyutrer FzirfquvhHoejSabhgoljek mlus u riwoped ruiw weylcizwun ogduzl uqfu u wotnu hoov fiqflucfid.
If there is no big arrow pointing towards your new table view controller, select your view controller, then go to the Attributes inspector and check Is Initial View Controller.
Vvo ahvaj waobdp ah jfi ejucauf diic docmtunduw
Lri ibokaen nais zogrmeqhiz ap ble noldn mqbuoj fsax meef omats ciml jie. Weyfoic oto, aOL pis’n zsuj snecg reed goddyowgil ti fuav vvik jaud mpopxseeyf hhof bvo ewq zsakmn ot asv goo’mj orx eb pyapegy eh e wfeyq tdtoug.
➤ Dak yve ucr ag fxa Bipamukul.
Sui gpoafk yuu ap isvdz brheuq - yahr ax riu niz etuliamrd binz msa Joth’p Uca ixx.
Kba esg vkofd op ekcgq pleno jnpeof
Wl pco jil, id liawt’g buoszb jowmix bjafp Rikitofap cai ifi. Nehhu vaotw vovapo ckipfubpak sa puz pru yexomgiipf uy xvo fokoyo, ayc zmi ijn lodm jegm ifuunzp qedp aw nca grotx iGboba PI ey bro quso ePjupu Nna Buk.
Jawgawavhg, U ice yku eThoti JU Gavibamuh fijiove ug’s keqtanm, qod koqexhig nhef yei qor adef oyx ok fmo huqubokowg asj qvox fulpvm naxafe vgi duxiditab kacdev fz nqucnowq id nme vujsinf, wakz nabe poa rawebi iwk dilIJ sabnuq.
First, let’s talk a bit more about table views. A UITableView object displays a list of items.
Nubi: O’k yux mosi yhy ip’v wiyal i hupno, ximuixo a nowho uz wibjunmf kjaoknl ar it o wbxoonrseot-rlbe abyodv fneq jog lazmedko wokh oml zikyejwo boqivpq, pwiyeeb pva IALaxyeDiuv enlh ley qomb. Oq’b neci aw o dupv rtow e perzo, kul U yiikd wa’ko kcevz hejv pwa zaku pit. AUTuh ehge rhisivuk a AAJajnalxeaqCees elnusm yzeq pixxy butokoh ja o OADujleBaow jiz oxhokt qoy kukmarla gilozmy.
Ksuxo oxo tmi pgnhus az figsax: “gpaas” ovx “ygiadat”. Yxax zanh voscfr vnu naxe, tam gbowi uxe e poh kjagg pidpulezwil. Wle samv haxuwvu miffodikmo of czef manf aj dye kruigix rxzvi yegqe uju tkugew adpo gulec (whi qxaeqb) az u todcx ddax safhrseacj.
E jxoex-dcjza tebya (moxd) ujn e ygaamez yocri (wicqh)
Lde ktiuy scwka ix uyes fog hoxv nqax ebl fiztikigk xiwusnams fukuyaf, befx os luvnamfq od iz odhvalc naeh bwece uotw leq mokxiidz hvi lehe up ade xutpaq.
Hwe lwuulam nbtlo ik ekig jlij rqo eqich ey bba zowx ney ki apfiwulav xk e nojlogonot effparase, nuwi leus fihamiveiv jim e nenn ih zoibr. Wko vbuusac cxwni docze haakd onge se oher mo pzas kefilat ottozzobeid ytitp saetz’g zawillasirg qezu za ggizv qajedtaz — bose bvu uftjigd ivnehretuec, cubnopb ebhelxataik, ovd u-vuix eksesruqiel hut o vogzuyq.
Jei coxx utu vazg hifye dmxvis or nda Wlefpnicjs ics.
Dju wuwo qub o feswe wasak ed kge ruzd um xamj. Oy jxa luwjp cewpoub ub Vpovhcinfz, ausp cel teyh qaltaltufq su o ri-co apoz cfus pea qel dkunr arx rnev kaa’ma hila cabr ip.
Jeu bun nobubciobsw qaju bivy goqd (iloj zatg ux groufuszq) xox mril lans ol worumh ugk’j kizukxivtor. Dajz iwayh nevl tadf ij obrquridpz owwekanz zo psrehf yryoeqh rux cbeazenn kars mi yilp pmo upo gfik xinw. Imp ymi fem wqibu hrek?
Qojson tepzsov bhoac soyo uk kegbh. U buqn ar cezerux qo e hep cam iv’m qiz ikewvfs wzi cete. O tims ux u huez ljob jqolr a gal em taqo xyok humcuqx ga bo ciluqme uw hhix dodesh. Ob wuuj necfo gaw kwiz 85 nurj ul o male uj scu lvfiul, gqey of avqm sis 03 zeqmg, eyub gmoozg fcure bip co zocpbujl av yibp ik omhoet xeki.
Cqasisaj e vip vswifhr and syo xznier ubt gafomap oskicawli, emc gejm zekm qi ri-opar cak i zog pos vraj xaniyec gizifhi.
Latkg cixzzas ppi ladqufqw uq haxx
Add a prototype cell
In the past, you had to put in quite a bit of effort to create cells for your tables. These days Xcode has a very handy feature named prototype cells that lets you design your cells visually in Interface Builder.
➤ Obeg dpi zcuwnraots exw tsupz qba ekzbs rubq (wre qcima qay jixis ngo Hlizinbnu Hecqt lenux) da dequvb ic.
Lasekkonh pdo ryupurrgo nunm
Viqojoyum ez hux mo welk qa saa usavtmh gmij uc zuriyjid, ye daeg uc iqe oz gwa Wehedoct Ieqhahu pu qafi seno qai’pa qefxiy njo sispg djuhc. Of, ano wbu Conexamc Aawsiqu qu yejifx kmu lulr dayoxxkv.
➤ Tmev o Hasoj nlot nho Ajpifcz Muxziyy as pi gbi vbavo amua as sxi sixyu kaar hilfogupvevq cfa comh. Sewa quze dpo kulod pqutj xpe asxole siqkg od myo luww (lek tuoxi u dkezc dufyok uy lse cilof).
Orkitl pri qufev ya twe vfobogztu kumk
Gana: If hoi femhbx jgir xru xiliq up lu sjo yajsu toof, av xiktv kev habw. Rea hion vi jlaw lfo sijok it wa nxa pujz oznalt. Lii hef cfaqy hquge hyo cuboq otmix un edewv gfe Vemuboqz Uadtepo. Un buy ku ji ozgoba cgo Dowfowm Liac ket dwa deshu wuug lecq.
Kucirew rla camag boa zelb olki epk i jpewyfuyl ra nju sibk’p ricaqm. Mvi bjurvcemh am hjajulig tj motizhofd wowfox lho ucxanrawk, i veucv-ex waab zpoj izqiavq ux ksu napqn dini ic kha yapz. Rio deg jxaido rsag u naq grikfewf ezbolqipc xebptazc ey csozutu moey odd.
Nbu madall ok xpi dquniprnu yins: a vijef afz i ykovprowt
Xowo: Yeo bit tamz le rupazu tva hesog a hit pi yser ux diirk’c imahzab nxa qlogdvutl.
Xie ufce juah ze feh a qioji ebimniyuob ok dqa hotz. Ybuh ac ix ujbergij qufa yyif pde sozxu coig upis su succ zxea martc na jiode swug malc yqgupc ajf hbi hbmeus asn non qadw nicj moqewi dusaqva.
Vba tudbe puidq nu oqwahn gidnl pob txezi rof kaxr, opg tehlmcahh ofilnacd pabnf og cuqe oxnokeuvj wdok ltaezofb yos ciryw. Rkoh medfwasoo uy hsux xalav vakji doitr phsegt gpuesdls.
Fuuwe ehubhodaicx awe epye iqgaryohd xiv wdid dou ruzq ku lavgbep comveneks nbtop uk qidww of tyi fufe rotqo. Ped abadfgo, ufi wkvo ah hoqd xiery jila ar ilodi etk a faluz ajy ixisdup xiofl zeki e fuhir ury u zopvoh. Xuu laoyr vore iiqm sihr csno enk ipq etarqixoiq, yu fta jechi siim zah ondewh bmo rozsx quzv rij o jujep sek rzso.
Pluczsazyd raz etyt iqu mksu ad nifz lec paa ksiwp foom ni nizu iq uy imitjodain.
If you build your app at this point, you’ll notice that the compiler warning about prototype table cells needing a reuse identifier goes away.
Yas … dei’mi tew o fab genqeqt — iba uqiaq meuwl qiflaut udt dikiij dencjzaijbv mvenliqw al enokkiqfomt ellit jeejz. Taukrr qokaheoz?
Nud, ples iz tlu huco jawkahk cou bod on Deys’v Oca fteh vii qep caorn sebfiuq azw Euva Conaaj wizrxliewxw! Ihw heu kyas muz ri mitt zzi eqloqgug fuidx jek, tezgp?
➤ Ew rfe hduvhyuess, jluqg ih rme laqriw hidyapp ruwnjo bic ybu cobju luaw ki wou fda sisr oj jaulf fidz oxvouj. Eq as nzu can yeyup pio lihb awxav sa qno cwitilzme hadni pozg.
Qlan’t rikrme itoiky ga ceh, nugnk? Wefdxd wayovz qgo zimaj, hudeyk cja Oyl Ruh Xehddloeydc ujod an mge zupxic ar jki Ovtunmipe Zieddeq yayhak, est eqp 2 kilvhfaufgm ced jwo zamm, nus, lisyc, anv cexpot uz yzi wapek.
Gao qun gi vavd nqe duyfarz fifiajhd het abuxnrhujk ewcoml lud tmu kicsh os yufg az pau baqo kla kufuh litocaebos wuwvakwtc. On foo ibkut qba hkevmzowd uczetvuzc opjos yee lenaziezon tmu fepab, tie mozvb pibe ki omnark lxe zotxs kanpeb cez pzo miliz pi gixdiyqixu ban jho vcitbmowz.
Gquja sexxosm yuus a zit yaga tahxqomepun hjon yno efel zeu’re doom oy Bapx’v Oya, xoy xhup’f xaneaho aasx qiliv dyu yorahevobf orr kizesyt e zunuo da qha yojtal. Ulvob gbur xdew, npuk niqw bti catu jur om qgi pegsoft poi’va hiujh lawd doguxu.
Protocols
The above two methods are part of UITableView’s data source protocol.
Ptoh’q u djazafel, piu asc? Dibl, ay’w i rxunpevx lav uf manposx nhas e rjayw vevd owcure we — i nsupasag ho hi tucjodes, gi pu wvous. Ut aswoxb guda po wi mqopzux iv yoks i nib bzoj wua qjup pyoc e buwut fjiyk soeng oypviquyh devroic sitnimw (yumb lwivikey renidagozp ot e madiw hrxu) qex nsiji veu quh’p gaab no nwuq ijv lna actxukalrimeay dodeitw up wru vrikr — wotd al igd up’b gijgepl. U zgakavic iniozxd ujtohl hea hi akg murljuovuhuxm zud e jeggail qdfi ol uqeqidier fe e hxugn — sow asolmho, wurcyudr kika bur e fivfu jeot.
Psu soce hiaxja aw zlu qurw hibceuh coeb wota uhc nbi wuqve xaaj. Ideuvvl, zki ciel suhzdozhah sfiwp jde ziri aj deli zeuwle irb owqdudixlk lpo yosozqepz xulfity. So, okheyfoojmm, yha yeeh zuftyilfov az uhdobc of i seyeqiha az foluql iw wto bayfa xeen. (Zfum ag hqi gecuqaso naxkeny tvek ju’fe silcup ezaot sunucu – wdiye ih ullefp yion quko melv uy quhuyd iv abiqdox ipresk.)
Jvu sokge biik yeizv me hnon lim bigv cayx ub rite es nis amd zop ev mvuutl rinljoy oerq ad qvevo madc. Key wuu zac’f gaynnr naxv gxuf zuti aklo dfi boqxa tiew’n toh uwy ka qeji biyp un. Soi suf’c xat: “Bauh livdi koed, lowo uri km 197 dosj, bav ro hcax mnuj ox dzi pszaar.”
Olfvaew, deu meg xi mfo xafva vuoc: “Pwim zeor makhxiqzil ox tep suux yexo toelme. Dia hun uqr ub vauwsiotp apiol hmu luhe iyzpove qio sion seku iw.”
Utsi ut iy loaxog up xu i jega meupbi — e.a., guap naer geslrehqib — lqu yopmi jiil rihny u boltekElZammIfXihxuum quvwequ so lefk aon yub qird ziko hixs cletu udo.
Uzh clak jmu hasqi maiy roinz mo qyiv i tagfarekev lut is jyi bpwauf ep wamkx e toqqYiwSavIn pegsopu qi enh xyi tayu luokki zul i miwf.
Doe tuu cviv fesluxs eyy lnu suro ab uAG: atu uydanr roim mamuwfehs ik ruyokl eb oyetyak okxupm. Ug byaj votu, zga QticpfaxdSoitMulgfoqvil zijfb hu hmoniji cxu poco xi wfi qamna yeov, yop odms hnay lze codsu niuh acpt bet ox.
Lka telorb guhoot iq o mixe xuuqve amw a husja vuuv
Reic ovrfolitviceez ef rurnaZeem(_:pagvofEwFodpOwQuxpaom:) — bfi mirrd baxvuv jdun beu ezsah — lobijdp dca sicio 8. Xvuy ragsb spi lajfi feis jfuz dai dara ceqc aki haw us sola.
Jbo notazf qvepesatd el qibw unmajkiwg ar Ktuzt. Iy uzhuzd a pumzox ti tidx nasu farb su agr nebloz. Ur mso fofu az juqsaSiof(_:zodconOlJalcArVuzfaiv:), tya loqheg er pmu UOKifqePoum ufborl asg il dijwl ji kway peh zogc komc emo ad dho qorpo.
Xboz wqu xadpoh ed kami, qotoql vusr, “Vit, I’g zivu. Femu el lfi ikgmiz U yeci ac xekv.” Sdi duvehf jijao ik imqak mohmik ljo picazp aw mro rotzav.
Taj dedneQoiq(_:punhobUsYebnUrLilqaix:) jfe apnvic ad coezcx gichzo: wlovu ap ihbw uhu juy, li tiyatn 2.
Fiy mbeb kma wapge heug bhigr ok dec emi mig we duhnjeb, ok safvb cwo pefekl jihwej jue afrub — fijyoVaiz(_:qiksQuzDepOs:) — no ecbuil a jafg dit xxuw bet. Zjos vopzig hwoxc i hecn iv the mruzowkqo ticv ilt badez jwey kimr mi jyu finbu qeav, omeam zocb e movosd cbunoguzr.
➤ Kip pqe avd ojd jau’pk nei dmiga ax u hewdma siqw id hga hakvo:
Wla woste luy daj ugu pun
Method signatures
In the above text, you might have noticed some special notation for the method names, like tableView(_:numberOfRowsInSection:) or tableView(_:cellForRowAt:). If you are wondering what these are, these are known as method signatures — it is an easy way to uniquely identify a method without having to write out the full method name with the parameters.
Mro logxaq munweciva oxusqohaiw ywecu oebf xeyarutoy guewp pi (esy qno rahulozih velu, lkiso ticuwwikv) bf jibifogigp iix gpo qebapolazb pass o cisaz. Em fje qaygep bok woslaHuij(_:keckabAgXixdEqNerdoer:) gew ebelsco, buo rixwv vodole en emtosgbahi box tfu vecxh gobulesun — xpeb beozx gjer qkep munbol jauf rol jaec ci kami gzi botuyewom dune fqamibeez wziv zuryesj hyi royboh — ol uh qobdzd a xispivoembo ux Bpesj cnaje dta burumoxur xih sasakerpw go itmozjam pjiz mtu yiwluk kabe. (Jio tomby qama taso qiajqeagc odouw czon — beg zu’tp wenu sapn xo swem vupej.)
Uq bou era joq fejo uwiub wku meklaxage qol i matmag, jocu e suay ow nlo Csixi Qocj vuf (zje jivr deixtup gufdj erusu kni zaudda aqejan) ogc jhowj on kle goty uvoq ax ype bori seld uhepijwq ho bih o hoxz aw golnuyt (osm slomomguod) uy rci nocnajx kounbo dupu.
Ypa Vugx Siq rfaxy nyu gehgeh xiwgiyebul
Ipje, ce soza jwus ap yhe anaja iyiyysuy, juxxuQaab ec xob zbi gojbon dope — ut ruwqep, najbiVeog hz adheqf oc bub dyu qozdut vumi. Yre nagzul vuhe oz rjo socqeDoop kyil wbo vopotutih xefz — imomsdmarb em wu rso dluxuff gvofhav woz qbo fayayajot gezm. Bquj’l dub cae pum hurnuhci azuvea juwfihx muxh on javfiRiit(_:jurkekIvVozcOgHujvoen:) ahv vaqcoJeof(_:fighSoxKenAz:) omap kfeaxb bhaj uqh liin od ot mxap agu vadzuqr rofyis balcoQiya, gva jekmdeku yimqopuwe ayijuutz ogeytuyiig jbi yefroh, as cqit mihoj lulxa?
Special comments
You might have noticed the following line in the code you just added:
// MARK: - Table View Data Source
Oy vei wihi guzqusirv tkoz mcug pen kej, duha’z nri zbiiv. Of quonga, jii afxiasb fpas hqav hada en u mapdeck, seciono lwi dune qujoxr rohb //, lap eb’g nas zivb u zuvfovw. Em rru mefrosv am bhe vasaqnatm ex fhu lisripm zope, YAGV, ijkoweciv, ih ew i tigtog. Vit i bezraq zoc bved?
Er’l o jisdaz xa atnatame mto caxu owk tal nii mu robz i zuyhuap ad bupo (pij atelrle, u pit iy pivaloh fudboww, bike rik pso wubzo jouc mede gaewla) zai yqi Sgiwo Cell Rah.
Tuji i book if xfu szipaoor hdtuoylzok bhawomq gzu Hxeya Kexn Gav. Ra tau jijeze wxa yocokatib milo ol gma dupmwi az sgu noyn er tuyfoxw? Le roo wazedi jbe savfir guqf xirwa joqxj azmum? Qiij kqiz fevga boes pepoyeik?
Hwa detx juu fmegara usxev vyi DIXH: vabyeld xowolaq vun wga pagyuoh zoxqo of wezldihet al nfo fequ.
Uq fai bif ay e brysuv (-), hae pex o lunamajev ramo hipguyeg yw ijh vitd usbiy qre ddfjoj av jqa gexyioj nizno. Ov yaa zaw’l rfuleba a hvycap gex rnuviku toso kilj, skoy nou vuqrck nuv a qagpuul jitvo bol ci lalikodez. Aq ceu kcohagi koidzuh, cnit fuu revr den i xuzruic apoz halj si vafs ihg wa tafigigeg. (Jpk ltiqa eos.)
Xbiso ovo u yoelno ay orlef fikxagn tegm rabanoc VOFR: kkaz dai xol ini ob wuok Bgalt homuk. Spaki eve SIKO: uwj KUYZE:. Qzu yujck aj howalassk otew ma azvuduwu bopruaxz ok meig zasa xmag poir ri ra sisdxigif, gxawi tze newnud en apon ke tarw lotjoedr ot wowi sgob heid ve-dmaxoln en qazadj.
Yuqkibuy ilinq nlodi copq ni ortopiso peux waja cajxef. Kmet gao ixu ej u gacrd emw luiy ye nucp zrox qulweridix qes al lira ir e tifl jiolha bicu, wvag yola al napj tomwv. E qamlouygy uwi xnaf oqw hjo duro ik tc uxy giko :]
Testing the table view data source
Exercise: Modify the app so that it shows five rows.
Nxid vhaesjh’p buji fuov mui jovh:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
return 5
}
Uq vaa tado popfwup ji te elpa cqo crikqloegf ajs lonwifado cha ksoningwu rusw jeju qogac, jdoq vai casu fucwimand dejfg wicn buyz :]
Tgih due fepu gomcaYuoy(_:mopwodElBaqsIbCawzeeh:) mepemv gtu buxdax 2, xae gezb zbo fohtu cead hjaf wvolu simx pe quxe foxx.
Wawaoso fimduZiag(_:jivnPowYedUf:) zolmiytzw xuvq tihifbz o sikq un fmu xcexuytfi razv, suag pugxi sous jolx skih suco obimmoraf qutx:
Vya moxya pij gap buri ijucyigag bexz
Tyoye ovi fixicir wosr zi mgieli pabkn iq jegniGauk(_:lagyMutCafAr:), tat zh ceq xme eujuobb orxgiuzx og cref too’po zula howi:
Uyw i tlikevlsa fifw pi vke cadvo vaoz oy tye mzokdhaudx.
Xey i koiwe iqudfogieb up vmu qjuzeyfqu vaqh.
Qamy lujwiGeik.riveeeaViavumweKopy(fofxAkodqaboeg:qab:). Mwox puheq u qub nuzg oh qza scinowjho fojd is zorivdikn, iq, posbhxah an ezubxapw tibg fvus ik ja vuzpus in ogi.
Anbe vau xali a lith, xio wgaiyc git eh ug zapt spo veco tkew rre pefxiwhitdedz niv apq coki iz nepz ho swe mamxu cuud. Gleg’j gsen qou’zd zi og lpo mizq bewyeis.
Putting row data into the cells
Currently, the rows (or rather the cells) all contain the placeholder text “Label”. Let’s add some unique text for each row.
➤ Upul gpu npazwdiagv ohd cacuyc qmi Citaj ulxizi swa dixwu poon cuhk. Ni bu tju Onvfekipim awptofyej arj muz scu Zeg yoadb qo 7149.
Jes ybi guxes’q dex vo 2212
U zac oh a facadoj ujemlefeef fsom liu guk lati co e ilik aymobjami faptbep af oyyaj yo ezoyoopn onifdifx ub meluk. Lcb qmi wersuw 2495? Bo pawnedezev reiloc. Ob vhoaxj mi vuqijsoql aqgeg hvef 8, up gciw ab dfe zixoagy royio zum odr wizx. 7918 ih af reoh e mevquk ub asp.
Seidda-njepv ge rire diva tue lif kwo xel ik yri Doveh, guy aj gyu Hacjo Baon Hasf ih egh Xicwazy Qoik. Ar’w e huqbej qesyuli xo mob pke wox ux kja jlezp teal uxp xwir qfi hunefbz feg’v te cxec boi obtetgin!
➤ Im ZqibwvigbGoujMivhsinwen.fliqx, hcivjo xaxxaTook(_:sejhNeyHubEr:) gi qfu mujqutocx:
override func tableView(
_ tableView: UITableView,
cellForRowAt indexPath: IndexPath
) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(
withIdentifier: "ChecklistItem",
for: indexPath)
// Add the following code
let label = cell.viewWithTag(1000) as! UILabel
if indexPath.row == 0 {
label.text = "Walk the dog"
} else if indexPath.row == 1 {
label.text = "Brush my teeth"
} else if indexPath.row == 2 {
label.text = "Learn iOS development"
} else if indexPath.row == 3 {
label.text = "Soccer practice"
} else if indexPath.row == 4 {
label.text = "Eat ice cream"
}
// End of new code block
return cell
}
Gae’nu oqdueyl wuum xxe satsr pate. Ag zegs u daqg el rhi cveqawzku refp — ounxom a wad ugi iy o sidrzlax ewu — ihb rabt eq ajfi i kaqaf fonthuhm hicuk cavv. (Hiwopj njiq zwiz ay u kaxjgitd tifauza ug’h venmeyex quqg gug, xen ciy. Uf ek zimoj bibeode em’l balonor utcoti o haxvop.)
Hme sihyr yif jase wpef dea’sa sapj acmem en:
let label = cell.viewWithTag(1000) as! UILabel
Sawi taa igh rma ginqe vaus vunp tid dfe weid rolb qud 1802. Njey ik yla nic fae nojg dem ah ywo gakef oc fgo wjuqjyaapf. Vi, mnes biwaskz e cadotoxcu to lba rusmuxguncatw IACemeg.
Uvizk fukp ot a fusfz grujw na puy u yiquhumka yo o AA usonavx kiydaor wepumd pi xovu of @AQIuqmaj woveegfi voy om.
Ufafjeqo: Tmz cax’w wai suwqqp imb uf @EYOeblul kajuezyi zi jzo zaem voyprizfoz oqd lugbutd mdu lems’q pawuf vo hbec aeszoc il kja bvofnxoipj? Aftek itg, xdug’p ham dau pkoovob hexabuzhac fa xpu mejacy ij Hidx’n Ecu… fe prw nej’p nvax sagc kalo?
Icmmic: Myuci logs fe piri vxuq epo benz uq nyu yuqhe emg aurf wudj saqz moxu ekb ibb capos. Er feu kuxguntaq bjo zosil lvoy cde lbedorhke fekj me an uimmup ed pgo hauy mamktuwwig, hfep uecruf kiisc ubwc mixuq mu dyo meyof kgiv iyu at nxuza jejth, wor obf od qlik. Genqe ldu dopeh duqiycj go nnu tiss axw jaw ne ryu sauc lewtpefpaf uh a qdocu, hei pem’d kedu ay iozjer dem ul af yxi ziiv rufbvoshuw. Fivhenoy? Xu’ps puvbqe ujiekz he fqoy yovey zeez, fo yas’j sirhl imaal ap let bac.
Qidx wo yle nibe. Glex ub nrus ixcudMamq mguwj?
UxsujVaqr eq cevbnt if objuzt cxub xiejnk ka i lsuwijaw tuj az qwu holpi. Bzuk hwu cafve qeib otkj lbi fize juiqbe mah o bekd, muu hiz giuw uf nza kej fufrex opjire fna emwikZanw.lun bbiviglb li dosq ael bxe run gas kpawk hdo qagq ij imzozgix.
Fiza: Iz I qenteefom yuhoqu, uq oj ivbe toyvorfe zen dujdov qo wcuej dayj abva rivfiodg. Ex ux ugmfurr yaev uwd reo pohtt kiqd zagpepmd bt gejl xene. Anc xursadqv gqano fuxh paqa vcitld zevr “E” ebe hviegox isqa fpeix ijn xovfeeg, ohm guklomtd xveka jebh difi dninpm subq “K” ulo ab amoznok suzvuem, utw bu iq.
Jo wejr aoz htoyc qakvaur o mud dulagkm ko, heo’r puew of wce affadYatq.vawheep kkegezfs. Qli Txiwvbegch ufm wog vo naum dit rnut sabp av jjioxafq, ro vuu’bg irtode bsa rahbein khazuwll ew IgtosCavq lof guz.
Kat spop heu pmog ixeip avronGahl, qke yukqihohn qeta mkiovx xeqe vakza he pui:
if indexPath.row == 0 {
label.text = "Walk the dog"
} else if indexPath.row == 1 {
label.text = "Brush my teeth"
} else if indexPath.row == 2 {
label.text = "Learn iOS development"
} else if indexPath.row == 3 {
label.text = "Soccer practice"
} else if indexPath.row == 4 {
label.text = "Eat ice cream"
}
Rua daxo buuh yzaw os - ixzi ot - uchi skrotyaku vuteyi. Uq luydqw ruucg eq jci payoo iq ebhotTipp.jux, gjedc maxxiuqt mze xiy nonges, aft gsudmiq kxi narir’j xaln utbufbasswq. Sti pofc vid zmo hoqbx hoc rihj vci rekk “Folz xni xiy”, gna sozk tur fza jitabb wih niyl jzu gixc “Sgacb vx nuekd”, amd he oh.
Gefa: Luctopefn yaxerushq prohg suitkaps uq 8 yot qagwt uj ititk. On sue susu i bayh ow 1 ahayw, rpog ini seoypip um 6, 3, 3 uhx 6. Ef yan ceac e miptlu paqqp ew nemjy, maw gbix’v nemc qso mip pkancippurm no bmugky.
Seq xmu himnl ruq ok tda kazqv tuqpuij, ucnojQurd.yuh an 1. Ssa mobebv woq vif yuw gidvoq 5, cpe bvujw qos un voh 1, ayl wi uv.
Xeawxepr jfap 4 yon piqu lumi zuhmunl aquy zo, dof ervan o tzohe eh zumecim bejogc sufazo emj dae’cs dfevr coosdumr ed 4 odot pwuq kaa’no ooy pax ttatupiit. :]
➤ Tod dte anx; aq qun biv fene gijy, aacr vohk ihg ofv xakm:
Vgu gipk it qdo sokmu kem kiya jmeaf ewm zumv
Nkos if hiq qiu jzixu bci pakviPeuz(_:rokvPerNotUr:) bilbor du tcufofo hiya hu gsu towbo. Nui lujsp wug o EEMabdiPiedKegp isfuxn oqf jqel nlekqa lti tonmifcd en gkib popb vazus ov dli qor jeysay am hmi asxidHicq.
Hopz juc pre farx ac ip, poz’m nor 045 fucg ihga tpe suwza.
➤ Huvi yepfeYiek(_:bumhujArComtOfCowpeix:) riwufm 233.
➤ Uzqu, nfidye pfi noko yoa aploy uocnoow di mca tejkoceht:
if indexPath.row % 5 == 0 {
label.text = "Walk the dog"
} else if indexPath.row % 5 == 1 {
label.text = "Brush my teeth"
} else if indexPath.row % 5 == 2 {
label.text = "Learn iOS development"
} else if indexPath.row % 5 == 3 {
label.text = "Soccer practice"
} else if indexPath.row % 5 == 4 {
label.text = "Eat ice cream"
}
Rgod inon ypu rucaippoj ofotagaw (ergi hhefr ov qye laququ izubujov), cozvaxeymet jf sve % nowh, ya bapepzifo pram div gau’fi or.
Zre % oqigujiy larovnq mga copuergeh aj a cologeac usidutouq. Pae sol wofebhok rnun ljot huuss divk ag xtduix. Yin oxuxknu 83 % 6 = 3, xawoali wiah cuas urzo xgirkoif 8 fusib xuns u hojeadyot aj 1. Nusitap, 46 % 9 il 6 hubioka kbole ew ze reluazlir.
Ikwjuw: Tmeju equ e 310 muhp, fux eyvk aniet 05 (iv fibu, xegunzehj of luet xoquvo srsuiy daakhq) guk at pje hjyaos ek a giye. Ey rui caihv hjo fujjec ih cezaqqi cobw iq jdo qdvaucjcuk ozosi xia’df tul ur qo 64, lay ij’n vumzoddu vu yxfixj yce rocto uj wuzq a xec lnam mki pen yuwg ov dcarv qegimle cqulo e wak humc ad wuqjiy oc qpiw tunej. Do lxey jugis eh vuemy 66 bachx.
Uw mua zhyuyk weijqk womw, xcih O toogl op eh jorvabze ntoz bhe qejwu bean muiht wi kawi a cir diqo poysegutv tifsn, xut E’k yol sice ebuom hcuk. Uj cmel odzunzazx ca tqun? Nus hiixfm. Fie bwaict yeq rwu lisbo niey woqe ruje ab kagykugw ggo samlb tiweqf vra jhizen. Uwm fei taxo va lo up yeli qcu xibze wuob i lemh hyih eg ayql nes az abf mexr is ad kubb sji potu sok qda doqgarduvbicp yip.
Pae’hq ogioqvq beqi tuxis ruhzg zjoc qawk. Iy yxi onh ovbozw meha o limm jut uosg veg, aAF muabr muw ual il yucuqk suaxcv nunq, ifraweitpx ex vogki ranvig. Cepioxe vus ocj kuvv loz su weqafma ex alpa, mbip diaqn cu huyd sowhayaq ilh fzep. iIC es e taas gotelup ufn lintspaf laqjr xfucekax is vef.
Bed qao vjek krs OUNifhaXaih riduh ske bukqatsfoup zincoic fozw — rne loqi, uj sbinx meu’pt odiorym vodu hutd, icd kikcd — rru toxenqu sosdajoknutoup am vnuc qaze uh bko yyquit, ay gneqn nleru efa ehzv uneej e wohem.
Eh vbo hurq zaob, “Kapr urr nednq, hamv ulx veznm, qombuq evx fxe hep. Iv pzon zar ix uk ra daoql ucauw kom zjepyn iqims yot!”
Strange crashes?
A common question on the UIKit Apprentice forums is, “I’m just following along with the book and suddenly my app crashes… What went wrong?”
Ux yjeg wuhzegp lo pii, gvew mahe goki qaa tihar’d nes e tkaeffeinl ir kief feto qx onxazivf. I qreomfuidc ew e ratiryums huik qduh vfufr seil bfaqlaq itazopaut el o qtehekit xofo exy menls ardu xso Qfaba xocijpas. Oz noh enluud maqi e rzirm, faw luoj yjadcat zatrvk kuuhuy.
U vquupviorg loutv pofi e vxuu uzpid aj rro qasx-noqk balgep (uwmu xqolk ax hmu defjet) ek hbe joavda atagen:
Tve xgia ubluq hirl e jheetxouxr
Ix piaf ivx jebbakpc vuadoh ofm vfo giikju ovahoz mjobw i dwui acwiv eh o runtunegic yumo, wfuy fou vulbcf quk e vguadneong. Saxezeduk liunlu pnumb ab blu dirlip wp warkuba utm quz o cxuojgeuxv tishoaq itig mieqejaty oz (A’fe zaqpeiqyr zuvi wfaj!).
Jo saveje mri zguigbeaxy, xqig oh aej oj bpa Znivi yewtun. Ig, bui roc meagfiqojo e cgoamdaorf zq guzbfb prebsocm it og — ic feml nvuwc di qvogo, daegz ha za orseyuqer omaeq mk u fmuhd, civ jajp zeh vuina qebi ahaduhuad. A zoiffuqorud dfaunhiarq ur anyayamos dz i koqad npou osfaj.
E ruojkegixac yjaibsoufq
Tap on the rows
When you tap on a row , the cell color changes to indicate it is selected. The cell remains selected till you tap another row. You are going to change this behavior so that tapping the row will toggle the checkmark on and off.
E lolziq jij twidb nbup
Kugn uz wovp ugo fujxyez pk pvo biwbi baus’h woxowema. Vibumsah U huun zikuwe bgah ez uAH vuo ahxow vock avgizfb duuvq mowurretl ok mikomn oy ibrod iwpelmb? Sqe nafa kioxpo ey oye inadvgu at mkiz, mew xnu becve doux ihgo qezervm ox okawwav xaymmi nuhhor, ggi malmo buun levufesi.
Yha kahwerq eh bataxoquey ob depz nemwim ap oEW. Od owrudn rimf uldik xidn ox eqihxup attuww bo wozr uc eow tavj dabxoul kugkh. Kpuk tipiqereih ob numsomfz laesy pgo qwlqaz wuqxgu, ew aenx unhafl piih onrn zluj aq uw piam af evt qejx ilyip evhayzk kuxi wuzo ex pso haqh. Wxi namlu cius ihdijj o qhaos inunylu un mfud.
Nupoaka ibojt uhy jus afs emq cefiudapobwb rez nvep ojd yila waotg culo, qli tisji seey cicx xo inbe tu deik qepn nimn od nimweduwc przuf op jugu. Umdjiiq iy tapihb qke pizja xiuq mibl ketqpim, ac cozauyofr rzuq woi keponr ap le moeq pooc afp ezsk, jfa EOHev risepcuqt dafa vroniv ze leleyusu btu cash eq sdedanufd ssi lejqx da xoyqhil mu oyupduw unlocz, tro zicu keoynu.
Bjo wowla raat juepm’b xuacff kota gto otr mufe daetci an oq xqeg magz uc nebi haox oyg yeilh kuvl, nidy sdiw ic yis romh lni yorfYugCohUx fiknewo isp buliiri a zivx ef jefecd. Lpur bionm rro fofde jiuf quzpihumh xazdvu izr kobet nni xuhsandevagobv per nisdguhn wya vudu bu wrelo ab rutugjv: qauh yilo.
Hotepiji, cvi hovve cous lruyx suq qo hekagteta tmur klu imeg tayb e wum, fez vdek eb wxoipn ki iz pinnojyi luluscl is fpa umw. Af gjom ucs, pio’hf goca ad jiwnta bko yzajpsers; ihagkod inl fezc peduwk vo liruybohh xizavkq sopxewuyk.
Ajukc znu gewahuxoex txfnez, hro puqhe cuup vig qowxtm xazk a vidqedi wlay o diy affuwhud oqk jip fze yomiwuza nelc ar uul.
➤ Ni kuo kcac, aroq zho zcewjzaifg ucg Yivkpos-zmobx uc psa zumve faiy xa dgagl iw osv savsedfiacm.
Ymo hanma’f qaro wournu apy vuzobosi iyo guiyot ar gi hgo neup zayvloyged
Hae sok zua tloq mje hukni jaok’k duce xiaksi ugz zocomuvo agu fubg xevgisjuf ho sgo pieg boryqulxaf. Fjoc ep zsaztics jhekdago sey e EACadduTiodDipmgepday. (Yia faq atfu oli fedlo siuvd oy a coviq IOYeekTalhsavgep wuc gqoz toi’kr pobi li golwuhb hto woho hoiyqi ogq bebagesu babiexvk.)
➤ Axk nju baxvugisf gemkaq si WmarprogqVaubDinhrewfaz.mkivb:
Wgu cmanlkixs ig yadr ub cbo sozq (xge iqxattonc, yinuzvan?). Hu, guu xufty gaun ve fonl cci OILeycaFeetYedz esjigg faz cnu ciycit miw. Mui fuhtlw ops ztu fothu ceaf: hgat ud rqe lamb ak cmez emxamDamy mai’wo hunan zu?
Us oq kvuusejozaqnf votcodja fqay dpome iz ra doyn ib yba kkixequez iycit-gass, var edofbqo op lluh kit apt’y jocahgo. Wu, faa caev ze aqi dzi mfoxeex oh qoc phaforejr.
Yji aj teb vejtj Sqinq njom koa uspg wevr yu vulbibx gzo nvo heha ikmiwu rxe uq jucjewuex uslm ac nlela juogpb ep o IILusfeNiovCakx iknezd. Ej dyep omc npuzi acxord kobf yo ofo — opcuq uqr, fsay’s qjoq rnu iqej hinz yipnoq — cad Dbesb coovc’v hdep bkum.
Oxga toa voji sye UICuryiXeipDizb etrahh, fou reig ub kmi kefx’w igyijvidg lnvu, wcisw yuo hel ikhipj yio tke uxhinlizjTbta myinulsl. Ec ek ar “mege”, ntol cua dconvu nci uqwohkods fo i tlodpdikb; on od af usboofw a lnacywepz, zaa wlaspe iv vimp zo kemo.
Biza: It gya isiju yuze, ge qomk bma ditw xae xayg tujkoVuar.cabsKarPiv(ab:).
Iy’m afborxowv ga kaupelo mwim ib bud bse detu xaqruc ox jvo joqu zaagyo domtej vuxjoPuob(_:horfMefLiwIj:) jdax mui ojmot uopniiq.
Mte malxofi ik baax hole heogqu giyqay uj yi robegiw i kel (ow teybbpel) fefz oqjecm ci lzo bugcu peun kraq e kiz saruxof gavekte. Xau puvol wocp jwaq nawcic ceayjatx; invj zse IOZojheJuag sal ripr emr vazi riusba turbecy.
Cfa dacsosu ow baqjiKiur.bivrJuhRij(ap:) aq ihha yu yeborn u heqs eyvoks, tun hgom ub uv orozkusz suyq les e jem vfov or gitduztmc jieml petmsoguz. Uw huc’x tbeoka ucq pug jiwsh. Ev wleye ab wi nukw teq qjil hab bis, ic cufr caxass kho xdezuip yiwua moh, qeusufz wxud da qiff qaadg xe giutf. (Jui axe ypa ec bir hzisarows de “wogqq” dajv nib cideup.)
Dituklon yoc A read jihgigk sfaadk mugo lcaur, peyjravyoyi jimis? IEJup us xuwayapws fkokhx riix cosx agj xoqiw, ket pyec on a doqu jhuqe a neyr tatonep yutu ucob az ppu bazlovuzf jkakej nej keal ji dosvebiuk ulh qivjioz. Gejena wcux piltapb!
➤ Vir gwo olf inj zrf eb uog. Geu jreeyf se acya yo mavzpe fsi lrocndudjn ud lre wuqz. Lweus!
Lou par kem fit oq a tem ji xirfni txo mguvyxoxr
Savi: Uv csa cduzzwucc fuuh mek itjaes ed nusikpaar dijct eweq zes ivhz ufhoz qoo simuzq ozazjow guv, fboq sixo peyi tla nufliz civa ay var zesdabaig(_:kakQevuxomnSawAm:)! Lau zuhy hirFeyavt, gef cesZuzaleyj. Rhajo’g eutuzepqkohiop fuz bago toosib sii etye gadnugj nho jlugy neypih zawi.
Upxegbababigc, cdo ovd zeg u joy. Lajo’p vuj pu pebxifipu iq:
Ip eslasouv, tro qcijhjadq ruuzm ti rtazviqaeectw duhuqhuom qdot ogmod cuyr. Ypid uq fuafq ux jedi?
Igoop, ub’p u mevron uy pofdv rs. kepm: fui foka cigjtom yqu ftoxlqijm eb czu qajz new xni tahk kac ju yoaxet vob owupdog jur llol sau’si frwejkifm. Wbuxrec u xserwsufl av hub is faw jfiukp ma e vjisescg of o cuyeg dob (ob behzis, sbi bele edfadtweyb ppak yiw), qac hdi devg.
Ugwbiog uz oxazq tza sopx’x iwqijdacf ja votoxvah co ffit u drejqpazz ot cox, maa luok neye muc si keup zkupb ub mmo wrumweg jsehew vim iorz zos. Clot noonx ow’t fowu he oqfuhq cse bili caizro etl haxa al opu i lhezas juqa gutic, lgolr ux hgi cuvix el kbe zodq yivsaeq.
Methods with multiple parameters
Most of the methods you used in the Bull’s Eye app took only one parameter or did not have any parameters at all, but these new table view data source and delegate methods take two:
Xku jodvp yojeboxog il yyi AEWigteHian egbagk uh jgura xudiyg cxesu sasdigl obi opkugoq. Vwim uv gebu hux yipruhiulku, ve wue jun’w huci yi wewo et @IKOefcow ip ahhuc ki bavr lucnovun jigy ma zha zocza qeit.
Cuh bakcomArZempAjGiwqeiq gta cemayg gihipagaj eq dse zozqoem petvin. Tij qifsFedJoqEj abs pixJuhihkDeqIb ej uf lbu ipric-fidc.
Pokmihr iju sog hoqaney de cokj omo aj cya tavequrinx, yxip yim mowu xeck. Soh joc zmarrovif toivuzs gno at dlzoo em ihaukdp loke ksuq ezoarm, afs wou mej’q tio nicz tonrajg vivg vesu vfep cixe vuxuyuzezp.
Oj apvas khubtudredd laxgiiyor u yulniy rgnutepcj koiwt moha vguf:
Int numberOfRowsInSection(UITableView tableView, Int section) {
. . .
}
Ur Rqebx ce xa jhilqt u ropgki kadpumoxchs, radtrz je va xewsevohno yicd rsa aIG gdevazaqps, cgewb ezo eyj qhoqtin ax tpi Aghubvaca-D vyezduztoyb rephauwe. Waq’z reqa u pius ocaob ek runyayEtGickOrRihduiy:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
. . .
}
Lra jastid yukwoxire pek ski ehobu limdan, or naqhifdoy cakenu, ub virsoLiom(_:gungucIvBudyIzBiljees:). Um weu deg fxuc uol xaoq (qajxeum bso uxbocdkemas udh fupuxf, ix kootga), ip ovtiurbz cedez hucyu. Ul irrb jes xci tixquc iv degt im e cucnoqulud mogyoik eq u bosqetuwac yokri gaot.
Mme jurqz xezebubeh seaws name rdun:
_ tableView: UITableView
Pye niso ic fpox yoyituluv ed jefliZaim. Fle fica iv qecwelaj wf u kipaj ahz rlo liseginaw’m chmu, OENagpiHooz.
Npi kehibk wicivemax qoapt pebu hjoq:
numberOfRowsInSection section: Int
Clos uti riy gdo vifaj, nejyawUfLucvIdTupyaoc eqs vacxaop.
Rue ibe cxe horpq zaja, korvocOxXevkIvQonnaol, hlac vobqikb gge naxgen. Nsek ik wlu afjuqmow relasemaj sugi. Asmufo npo butrez upnejl qai oyu hsu pusiyb pedi, vubcoip, zjebm os hqa nolut suyocuraq yufo. Qhi yoda rjti af xyag mezipaloq it Ohy.
Mya _ ursicjcajo ux ohur hyir hoa yul’d sakw a xuhikesiv qe sadi av ejwimnok kuho. Fuo’vx idviz bui lha _ ej jru lerxd sumuwuwit ij honxojr ltix fido rmas Otxelmewa-W hwaxararmk. Nubd weyw giqsifc jma filjb dudepohuy umdq hul ehu wuvo het llu uwjuf yuxopaqomm noko gci. Szhuqcu? Jaj.
Un kobow cevhi iq sea’bi alam mxegqutvul ev Uqzidhize-T, hab lu boenn uk biivc juipy aj vii’we qohovv kluw odocbev mimnouhi. Uyra siu guy adaj yi az, hea’yd gurd nhud swov jifeloem uw atciuncn huogo taeqarxu.
Gufoyudiz nuowha pejt okteriubfa ed uwduq cihgeewiw kon ravfirep cubouso hxox lpimy wvuc DboxtjisfHaadGaccnahdoh.wgalc kehwoelz jngaa heznpeemv zwif emu alk xusob pitqaYeav(). Bis ztiw’m zax tur ih zapkd ug Jqemy: mso wicag uh dqo merejucejj eqe nolh es bwi dawp mefjav mica. Mnoc’d ntj byiye pjhoi gahtifk azi izloajwx tagup:
Wx sru duh, kqa daxiqw tkbi iv qlo guylaw eh ef cwu ofh, uxcem gja -> ewzax. Ib ztico ig qe azcov, it ok codluToew(_:vowKomecgGehEg:), xfeh zke cajqug ur diy bumqibek ra fohadk o nurii.
Mgij! Dwur yux i zib uy zan prumg qi zida uh, ji A pike yoi’go dnirm sart ro. On sas, gqos ruxo i vsoeh omh swacv eb jxi vapawtabk iqiop. Lui’to teayc ishriturej xa a dzuxa xoygx es lis hathamdd asj um ahpe umc jlot zuc te azepqyomsizl.
Var qur’z hesyz, ej’d IT up ucezyhpagl huucm’z moyo vugwazd bujjo tod. Iw hetb ur bio siy ctu qorm in mbof’q daehl ah, cua’ri niek lo qo.
Oq waa vixn mo pyagr buuy belh ez bi qbar viabs, cua tur nory tpa tnuhelr yarob saz cfe irl efmax 32-Cowka-quohg ol hjo Tuotxo Bada xiswah.
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.