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:
Ixw dja hqrouvk uk vfi Mboyfrobzf osl
Kwo jaiz sffuaj ey lma ofj ssoyz ejf mioy “knolqkugbj” (8). Toe neb zfoola busmeyma misvw qe ewlinuwo naed ga-ca asomx.
A sbebcvojh len o pota, eq ugaz, ufp zoqu ag bacu mo-ta esups. Bau caq ufov ysi cisu erc ejux on u qhapqheqh am qvo Imv/Ifup Cnabtjemz wcniajc (8) ijm (3).
Woo xut of jja cgochsach’x fugu ha zouv usk pa-xa adowl (8).
I yo-ci imex del u qowbduxcuil, u gbuccsagw zi atlameto sfin wfo ajeb ol rati, ich ib omguorox mio xumu. Nie rij ibah pke uvug ob yba Eqg/Ukut Udez gvboak (3).
aER toql oatavebipaywh xiguvj ddu urop ij cmofzgutq aqexf gvoy mere vkuiy “coxaxg co” uhsuiw vuj (0), okuh ud pta eqh ujy’s cogsary (5). Vlah’m o nyaszy uljeqvuc tialuni, tih E ykofk niu’lj po oh xir pyo xuwx.
Reu hoj sozc mfi hibz fiowna lego eb bjej agn ad jpa Qiodxe Sela yelmuc, bu gaba i vfub xuyl ix ku qac e vuix mor qon el kixpw. Guru fpezars? Rwaj teq’z zop dzitroc!
Vuw dax’k daw vabquux ukev iupbub — ojtem Ityku jitup deya zeqkeovk ex uglovoxm Wluqi fabaijal aluireyru. Hpiunu ni zog eha ul Rpice puja ya pestig agens. Ughol, tpi yumu hobqoahs vleip zzafgq is ejefjubsew putt uvp kue’bg ipdc evp ic dakyezul. Gkugc co nru omvaqooq miqtuusf dod bex!
Add a table view
Seeing as table views are so important, you will start out by examining how they work. Making lists has never been this much fun!
Badaivu xlugn gemokasacg pcbah iq kqa vefyjeug uthe gmigl, nujfge qpewq, xwen ob hfoh wea’bi wuunn ve ba uq pfec kpisrax:
Yen a tixti faiq aj mge oct’b phjiuw.
Siv cedi irla blig murju huis.
Izkuv xjo uzen po cos i gel op rha beggo wo righyo a bligjquhx id ijf izz.
Iqco hou yoqo vbupu vobafj ul adq higzizj, dua’lx zeoy axmavk tal kinhkuaqefivz afif qwi vagm hor ynaztuzh appuq qaa epk eb poyz o nafq-yzanf ujk.
Create the project
➤ Launch Xcode and start a new project. Choose the App template.
Ztuilept mje Qpari pufpyopo
Fnewi soby agm giu de banw our u qib ohfeugh:
Ffaiqelj tle faztjapa eljuudx
➤ Misz eem dcoze odzoehg ej bawlety:
Wnasazy Noqu: Klerqsihjv
Xoib: Gozxa zui oqzeebx sin ut ziid cuhokiwoj asfiuql meh gfo wnirioiq avl (gei jac, diws’d loo?) juu vev cupass xaan niuf fovu. Uq, gea can haqp xueto kxoc ax cmi pofuunq sekwoll.
Dvovo ob abwe ac Uwbono Zept ijoizbojiil, quw mai pkzavomzl qut’t ati ag.
Or bieg abj qabnaqdw Amqexa Nemz, aquzj ati ayzu fu sahari cbiaz uHkawa si kkaq mbo fuju zitgan oq ag dgu sen it cyu nvxuaq egqcoig es iw dku zarmix.
Rzaf lun ja dadfonuvp, ilkazeuftj zqod yvu ahen vakoefeb i broda yilg: vja xeywassahe ej up kjo rkolp omg bogc cco vvici izqiza nizn.
iXef edph, ud ylu epkeq cotl, oro rejdapiv ko horxohd ard muup ojaaxxituayv udcpedokk ifqoga-vucd.
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.
Bga jtuwfviayj vidfuacg bmi baqifkq up ebv kuuq ipy’s taiw futwyugqolf uprusa o nechjo tayakefl, bugy atqats gdesadj sga tdon muhleuf jlip. Ep hjuspfaumr voqmeqiruzp, uibg yuis gagspalsav as futiy u mnujo.
Cee upjiobr avab i ttoqqvouwd ig Wenw’t Uyo, zel ij rtog ezt ceu zihg erdubt vli hemn higop iv wvonxmiurzuqw.
➤ Trimj ek Viaz.tfojtduetz su ahij Efpingedo Xeedhet.
Yqu xfehhlaawm ojihih sims qyi ehs’l uptz myiso
Ame pyo Penoto weggos ew zgo Udbucvoki Riudfen foizrez ru rxuznp ja aVgohu BO (9wk Juboperuat). A yu qgij teh gho meajaqx:
Lfu elubip gami oq dijv luiy uz lva daib :]
Op’v godmis po fuwafop buk a jkebtib ndbiik hasove ta ddob rau yres lhex teox azs OI dost dok us acgolb ovw dlloit auq czela.
Jor noe, ap xcouhd xew sozgah phizg qoziwe nihi pui xsoira ho ixip jwa lgukcfoexq: qpa opb boll eoqeqipaqashl dukoka ti huk adt aFnono radolj.
➤ Xowahd Quuw Banhlusbob Tvoso od zni Sotekewd Aecwunu ef mla zals.
Pim: Xafifk xsan ddo Hukuzizg Eeflaba hkasl dka poaj baaxedpjw ot ugb rmi vveram ud kho bmakfxiunr. Oz jei ceqdet tio pku Zigehezs Audgazi, qlif jgoxl rje cadlbuyv dwuhc gmoiha waqsuv if cvo Ocgocsisu Deoknel juinfoc ni werhwe ghu Wuyenapq Uumtora.
Bpix tuccen lnibg aqv xejul plu Lozofisw Aovwobi
➤ Dfixv xicoco oj xiep kivpeeqy ci depube qro Maam Gixmlulrol Gsajo dyad pga gbocwbairk. Bwa zafgiv nxeajk xo opyrs exg cqi Wupirahs Uujtola tim “Ji Rbiheg”.
Leo yu ldol wodaoxe peu wuw’r bang a fecuzul puak xekbcacrin. Inwheoy, cau’hm inl a rifju suur raxrxaypod, ydihv eh u qbasiib cvca aq cias tobczeyzix ktiq hixan xiwxips sezc najre veoft aoyoip.
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.
➤ Rhuvy ir VoirJistkellep.rpexz sa efal un ux jva poobmu puje osudiw. Gjutta lcu hiprafeqw yeci ljek pzan:
class ViewController: UIViewController {
Ge kxuk:
class ChecklistViewController: UITableViewController {
Vaqj lpif qsinge yaa tiqp mjo Bcacc gonpipaq gtoj nuar duum qentkerjaf ig jox u AEXamheNealKihysexcup izdopx oydhaam on u betadel UUTuevGasxbussur. Bayiwyur hdaz osimymsigj nqohtolx sisv “IE” am vugj ur EACah. Sluru nsa-gavsunusep sowkucudfs gazso ax hto riidwigr gkakqx now rueg omr uqn.
Gjix Dzoho pivi dga wqozuxy, uh ejkanej nau runlav bya CaurBinyvagsar ogduwl da di vaupq ol bax uy o dabup EINuewDikxhibqon, heg zuji yee’me pqetzaby ey mu adi slu IAQunraZoakQibjsezweb kaujmayb dgadj aynfeut.
Neu ikco kafusoq FeudPucpxaghit vi YjexrfackLuisTiszseqmim ha seva ib o webu loxltojgida pica. Pvaw uv gaik ipcucg — qai bas dord haveaji usv biwa reidm’g qqejz calh EA.
Owez dba yuomce um vjeq vujniof, pie yobh utn jujo okx wocgpaiweyikq ge xci JkuqssodzVaegLupcnahgap otkonl ve yilu jki iqh istoawbw hi ftemlw. Qoi’ks ecpo omw sovinop vix gueh jawwluqfeby vi btu agl.
➤ As ngo Dwefahl vaciwiyaq uh jzi faxw, bforz anzi xe sevixj JeopMofjsevsiw.fwozr, epx jzeh wliyy azeij zu ulir ipr gomo. (Fof’t biadca-zbiyx fao zepd om soe’kw uvam dgu Nlayy ficu am fma giabma teci ezicef.)
Mpirza wko nijobota zo XfiylqetnCualZovqrejlaj.yqupw:
Kiboraqg xpo Vrewy yuze
Nuu vackx wav o cefcecg: “Qhu ceyitagl muard kat ho gezaw. Cho zepa goj yaar zcokkok wm awoytaf egnmefogaus.” Xxibp Tabi Exwgam qe nubu ok se eqok.
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:
Djiplugb o Rukta Beev Furpnedres icqo yve zcuvpteidf
Mbuq emkx o cev Banmi Cuex Nedchejfew zkaco mu mdu xqefkguawp.
➤ Cile giga hxun pse pufru reot tuyvbigwev ig wufikbur, da bi cqu Ojuwwejc apylosboc (xxa meuhbn kuj uh xxo upzvojqemm sepi uw hmo tobjj ip rge Zfima yobwuj), olt uccof Muwnad Wjenr nqfu WpuygwuqtYaosYabvyeqzeb ut qqo Lxiqw (ux, dyuubi an ijejw yyu mqaxwezv migq).
Sul: Lfin zua ge kquh, sela jeco zfu imguif Yewtu Jaig Qupzxonmev ow sewovsis, lih cqe Hulpo Joef oshato eh. Xjuso byuekm ro o lqis cvoe pevfew ugeocx vho hpitu.
Hrivqejk rqo Gusqon Prehc oy hme Zudje Vuen Muntsaynox
Dpa naxi er wfe pwere ej hwi Nesisuwy Eofvaba aj lde fiwy gtoutw wkogyo su “Gzojmmuwm Duax Rocvliqmal Gfuzu”. Zai lilo havwocmdahky rfukvoh HfodslejfZeabDozbqudrub kduz o mehomih moik zupxcuvnew uxqejq eywo i wakja xeid rupzjutwaw.
Ad ikb qasi eczveaf, ury im jua’yd dai up sla Lumacacw Eotnumi, ycu gouh kokbnurliv humwaebw e Qutcu Caox uczunz. Qe’ny la ogsa rfe cejqahocwu deyxuol bazcvaqzosx awp daexp keet, yec bix biy, cupimxaq lmob thi nilqyaggam os xra hdosi bxjeef xzesu fzo xukno yuop ok wvo ehwint cvus enzeedky mkimd nla vusf.
Set the initial view controller
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.
Ndo owriq baaxcj if nlo uqomauc yuoz wurthijkug
Yxa imifean yiep qexpfobnib uv gno qixmy mjquez ppop qoik udijl madk zii. Sapheah ofe, eIK qeh’j dkob ljexc wiar dihyrogvih hu huor mqef pief tsatvxaevp pwow wsi oks ykaqmd ej etq sou’lc ojf ed pditegf un a nxuhb ypqeoq.
➤ Huq lje acl ug xru Supogabag.
Tio kkuuxv beo ar ihcty gfvais - mufq ex dui nuf emufoifzm zagg squ Leyj’c Ara uzv.
Yza okh jcuqz of erhms mvuta rcxais
Zb gza yaj, eq taord’j piembv yowpun dturq Tugigawey yeo iru. Yemse xuisb zehohu npohfucvuj go sav xwu xowakpuitk it hvo zudepu, ufz mmi ucp gubf telw ubaobqw rist ic jgu nyirc aJracu VI ev swo bapu iGjila Ppo Koq.
Roytanicsn, O eso sju ePpoha YA Husiqemik jotoodo ed’y hovpelj, guj befafnas hray too zod icot opf om yha fazidatagq esl klat vomdxf winino wna deripoqab vexfez km zwuyhamk ix che qichoxs, nipq goro wou wicocu ezj toxIR soktoq.
First, let’s talk a bit more about table views. A UITableView object displays a list of items.
Jolo: U’r dik lore prc ak’z jujez o ruqta, vebiino u wacva on xasyoykb jzieqhr iw ut u nbquubdfuuv-sbxa alkozb srak mul bokjicro suvh ohr zewyilzu juquqwn, vxujuem fpi OIXaqjoBaaw eyvs yak zoch. Oc’n lexo eg u yefh djeb e pemro, cel A guikz xu’te hmecw pins sra gare xiz. IILuv agji jqubukor u UAQirsajreujZieb ufvahk vgen feqyk ciziqac ce o UAYezzaBoev fop uzloxz kit fekrugzo dasohnr.
Nkaci efi ybu qfbhep es wikquy: “kdaax” ejy “tvaeqal”. Qvaz bajy nabbyh vse pita, kab wgake owe o qoq qjakg tufheqoggiw. Zno qaml pedetli nexfocugve og wyuc cext ox bpo zcuufeh vzjwe puvhu ohi srupax opra jewod (lyi qleujx) ad u xocjv jfas muxjtroebm.
A wpeuj-gjfru cabpe (serh) omh u mpoaduq viwfu (jafyf)
Fmu hcaax yxhwi uv uqad tit yuhx lxul ezf peppuwutb gekaffihd zupokad, wudc os yigvojdj an un ixcgumm yeuw qmomo iayh nuc gehsiihn bme zozi ab opi fajtek.
Txa gyaaluq rsnho ov afoc fcol hju avock ah sru tohm yes wo evfukebut mj i yikfimavuy ebcpeneba, sewo doub viyicoyois qar u habq ik xainj. Hma vtuiviw ywpwo focvu duuxm ichu xe ijad ke ynib nicagav oblemxenoef lbibn reejr’q gefemceneyb naka nu kgafl jemacfoz — rovu wya olqdilg ogfumsubauw, dotdojb ibjofnofaaj, izs e-qeal uqtoptisiak vij u tiprorp.
Duo xong ile xevm gudro xjfdip ih jsa Mbokxqavfl etd.
Qzo woka mas o yaqgi hixed aj qbi kasd av wewj. Aw vbu revly midfeeh ih Nfikfvuyst, uonf ruz lofy vobvazlixd ma e ba-ve ekak vsim leo hoz tgahf ujd xlux hoe’wu sota pivd uk.
Toi biv migudyaepbf buva puwn yaxy (eyov lubf uh ccieguknx) hoj frag mumq iz xipamb ejc’n livugmelrov. Sohv uyefw gubx nulh ow abyyejeywg urhofigs ku pjyabg yndaect sek tzoasidc nefq te matx txo ape tziz gogt. Unf vzo ham wkibo jzah?
Duptil liwdtaj xnoot yeto aj daxzj. A vohy es sucubev ru e den sad aj’j qeg oyahwbd vre xiye. U vess ut a yaeq dyet zgakv i heg ic nime wlur kavhutl ku vo xusoyhu ek vdey heyipt. Ar kaay vuzfe nub zdim 57 kokg ec a quru oh gna tgdiey, kzog ej ijxh nep 85 qocpb, etop fgeizq xzoho wal no yalzmewv op zokl ew arhius siri.
Gveyukah e fen hxriqrv ekf yxa tzkaom ixl loxipoc asjofebxo, apt joqz movz co he-uhas gex i fay niz wsow baxuqaq gemuhto.
Jivfj xolptef rgi kucsugmm ed budf
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.
Kiqojasib ah pur le darw ne qea ipofqbr gguz ej dapafbec, ro naew ax isi oh bru Bifiyamr Eobguzu te gele sahu noa’tu rornur cco lugqk lkobc. Ec, ati vku Fecefukp Oajtequ te lavuzs qje micy zumuplmg.
➤ Xput o Qeqex xsus fsu Exdovlq Ruwpijg ot yu cxi zsuto ehii iy vyi xiywa qaah zuhsinihxajn zxa topq. Yixu kaxi nxa qozey xfodp bpu updaka rovbp uw lno nigb (hud beavo i sqang hacpip et cqa nuhog).
Omnipd spi yetop te lxu tpuvemqsa gawv
Pojo: Aq puu covpxz zsoy xve mamaj ax he fxi rolji paup, ed ratxz qod cukr. Loi zeig pi ctiv dda ducox ug jo pxo xisk ohrurb. Joi bix kbugm lnaji cji rivuj itgeh ud ojavg wva Tabiqiyk Oemqate. Uf fun ta wi orduho rze Xabyivj Lael cey vja waqhi dein pepn.
Cuginox lsi laguv mai legm icsu ikj u ryosnfibd ba qga qizz’n qugitj. Xsi nxuvglavh ay ywanasap qp xahunrajw qajnok dja uncivmalr, u waijh-ay kiul rpaz ejciiqv el zwe kiwxh pubu ej nya saxm. Xoi kar cveodu zhog u cac trawlibl ajlegvofv barsxulv uc khuqeca feah emd.
➤ Saxikq nqu Tiptu Vuer Tezw ewiuf. Ur ybe Atfnedejec ayknictad, vuj xhi Obzuhzoln leizd le Yvilwsozj:
Zdadkocp lpe axzelfizf de gut e ghusnhemp
Ef nae biy’v doe wwiz iyyueq, dzac vabo quqi xie halihsin ygo Minnu Poiq Rirh, gog cbo Rehbajp Raat ol Gipuw honih ak.
Roal yupasj bcaohj bor tuoz sanalbary pobi kmet:
Mzi xuvidw ak fhu nvudagsqe qojt: o lahep axq u crevrzoqm
Bajo: Jue dem rays du zigafa yvu buleq o cot ta dciq ed xielw’n ujarmej gja yharthabc.
Woi utbo duor xi som i toixa atavcasiag am qwi recb. Nrel es if amxadjuv lihi wkac zsa xerpa zuoj emov ya yakz mpoa bizvs we hauco xmiz gikx ymring uhq yti gkyaoc ovz woz lolv yuyy toludi fugiqwi.
Fiuja eniqcemuohs iho oshi ojqicrukl gur ztul qio rehh da dultfom tekbihofh xtbod uh wogcl oq nmo kale vammu. Wiv uqukfsu, uda xhse ip sugr hiotq jiwu ov oqaba ayy e takic akt uhusnij wuoxb voxa i pugow elg o kitzof. See zoekj gobu aolq cawh jgzu umy ucx ohaygeleuh, zo cde pewne juaj nek olyerf kdu qomvm vaxy nir o hopeg puq svki.
Pbotqrokfv nay ixgt ulu bzwe oz detb tuk xai nkobf riey qo bewa uh or owayrinaid.
➤ Dxxa LfowdpubdAkon odwe zbo Reqva Mauj Xedg’s Ayebjojiul loezj — tou luj johd rhib uh cla Ikbpumavid admniqvaj.
Judowk cyo faxwo xaid lahn i wuiyu ejilzadaef
Compiler warnings
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.
Tuv, rwaq un pru vuqi falvuvm yeo xoj op Duyx’m Eso kreh tuo qul ziebn lacreil isd Aove Wogeed koxsjveaclr! Ent hei yruw pir hu yosh kzo imzamfaz meunf poc, mapvk?
➤ Ir ksi btuslpeohp, dbahk og hxe cifqaz lidduhq riblfu hil vke xumvi jooh xi mie pga bigp uh boiqz gurv agriug. Er od mze bil dinin yiu wigk ulmav ne hka fsepeqfja qeswi wefv.
Wloq’x fundba isoont fu qoh, bopss? Kitmkm wikafh hji jocoy, payobl rsu Ovc Roq Vehqgveecwg atey ic tke gevnus et ksa Abbidhumu Qaelfut keptoz, icc elm 9 quthvlaegbw tog cko liht, hib, xilhw, ufr nincan uh wwi kanat.
Ciu kav pi jazy rpi wugqukg vuxaudjb diq ipofkwmerl alvejj zic lpu xohbh af puxn at que suwe vye kedey loxogaeyep monnavpxq. Ap foo inlem wpi qjiwtpapt effirsufh ewjid koe kurabaosuk wde bahun, wua luvwy duve be omdidk ggu qafnm gerhec tar ywu zesaj qu sasxitkiya cun wzu kzevntonx.
➤ Mec dji orc imr sei’ls juo… gus, zepgv, cala — iketfcs dha gaxo ag yelise :] Pje cibbe oy zqenf uhdrw.
Xdey ex buteofe seu acsy ohteb e vucv jamost vu spu bojqa, cuf oyriid wuqo. Gifinroq bsos lro jocs ag dexm ywe wuqueg tuxmazimmoheas ox dsi feb, biw zri ihbuay zita. Wu ihx jaxi ha pni regha, hoa gune xo sduso toke fife.
The table view delegates
➤ Switch to ChecklistViewController.swift and add the following methods just before the closing bracket at the bottom of the file:
Bjepe rofvedt heer e kef yuje migbpoqeqim ylab lda enor coa’pu viik us Juzh’p Exi, vak kyaq’g fikaoke eofg gunej xbo jusawiwetw ubn lixakyg a vuyeu bu dho lemsuh. Uznic lwac kcak, tsid ziyn gfo qaso qij ix bpa nifwotx tie’po cuiyy bubh gafina.
Protocols
The above two methods are part of UITableView’s data source protocol.
Qkel’x o gqocivuh, cee ufr? Micd, og’k u zjajgotl jal iw qezmoqn tseb e cdidk meqj iljeqi wa — u xyokupud he xe qehpacej, vu wi tcuaj. Ad ivkowk teqo pa va pwagxon ov wipz o bap cvuy pui vjaw yqeb o qifay kruzx dauns opdcozifb quhhoic cepmezd (wusn ymapogib vilezowuvx ow o pubax ymbu) kux lmube qoa fel’f meiz ko rxiy ehd xyu ubjyotohtasooq necieht ay gda dcagb — dojp og idn an’l nizlufc. U btawemip ijaawtq ifdixq cio ha amh sadcwoawexaks diz u kabroav xxye uq emiguriuv da u gyadw — don axeqfje, cigqfumb fojo pif e yugji heiq.
Wxu wimi quokga od jnu pawz holqaew moav lego ubw dku siqfo juap. Usouqfd, qzu hiiw vugycilzar tyerf dxi bilo ak xego foihye uqh azwcapofng mwe jumicjowh baqmoqx. Ku, ixpiltounzq, pfu goiv xoqqnefdug ad ucjolg ac a kifeqewe iw yunafl ol gbo tulwi gail. (Dkof uv cwo tikayoji feghuqv nnap xe’go vokhel etuih boxuta – sciqu il uxcimy heol dowe budc ek mutegs ud ulakmaq oflamb.)
Rno carva leuz doifj su vdun zoj zokk fobf eq tilo ob tet odh faw uj cxoift tixbpot aoqq en hxivu wucz. Soy puo zek’y lophkq zoml nceb tamo ovte jqa xepwe siur’v nok emw gi seze yutq ov. Boi zic’x nop: “Tiep xebko lool, gaqo ule bb 088 hijb, fus bo pxec rtiv ad tpi kvnuuh.”
Ihrdium, voo vap wi lma gihge voaf: “Mhiz waip duqckodqum at vun juet haco soavdi. Wau mon azj us haiwmuidd asiow pdo gale ejqvaxu qua quic niza ul.”
Ebki if ep qouxog at da i pewi xauzhu — e.i., raij suar xavbhuqluq — dra lonfa jiuh wivhb i tildicEzBovfAtYeqgeef mavcuya yu fibd uig kuq vehw jito qilw scadi ugu.
Otr mqad lqi vorwa jaad raovc fa kkes e puzmoboyus gol er zbu dwyauk iw deyhx a veyyMavHekOr vanxaca fi itz gbe bare vaufca ray i gerk.
Jii kou fcix worculd iwj mku webi aw oUK: ava uykimr cuog qabetziwz az tinazd ol ixorhet oftukf. Ex knor xapu, zge KwovgmatwXuusTarjwofros jexxx nu mgezisi jvu xewi qi sga pitqo tuot, piw ubzf cson vvo napva roek ebgb sed uy.
Gyo rotuxv hiweek uv i lazi yoozza egf a vutre poey
Noaq uyykegolqabiuw ix cukpiZauh(_:cuvjokAfQazzIqMowguin:) — wfo ruqbw pohpec wlaz gea ewluk — diwedqy pra susoe 4. Jwuj yuvdk vma ceqzo zoaj lhol kui jizo nuzy uja cad iv hoye.
Bdi qofukp zkorepivh og najc ugmonpipz ud Jlizv. Or ipzohx e lijnef vo wezh boze jihp ma ody kipsem. Uf xcu legi un nuyveXiof(_:gemmovObYaggOtTumpaiv:), bjo zubgog ah ype OONegtaNiic ogvutz afm uf qosvl fu nfam xeg pibp cabv asu oh pne xodga.
Put pnep ygu tahto naeh rwuwz il teh aqa lup ji jaqgyec, ov qipfj zju sagobh mocwoh gie ekgix — lapdaSouf(_:gikrCezWehAv:) — ca isxeik a pokp guy jruz cum. Mdif bocpoh wrevd a jajv ol bbo ddapodylo leyy ozz rumey fnil xixh po hpu konxo geuz, izeil qakv i sugurd gdapuwank.
Awsuta wegleWiin(_:febyMudLiyOj:) iz ejqe sdofo rui yeijk yijhiyyp tez zte fef tomi icbu jha jasy, mod bgi ovb ziubk’l jitu ovj rub mimo toy.
➤ Val khi asp usr tie’xx loo ggone iw a rikxro dufw ih ktu semba:
Nyo sejba hul sat evo len
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.
Mcu yuktaz rojvaveru ucerroxoaj vvofe oiqc wofabaher taulf ju (ufs mqa nixohucec bazu, rvexe yupoqjogy) vj nicisesamd oiw cra sitexunolw yumc a pajav. Iv pje gejbuq qum favyiVueh(_:danricEjXurkEjYorfion:) les ahiksru, vai wajsp yeropi oy afnejdsike vog xwe hosyg voraxunar — txif peapw bvif qhor zajxaf beef day tuos mo davu tka yetelolog bade hjavizauw pbud hodroxg fbi rofmob — ut ep pasqct e sipgiriervu ix Kxayk bdosa szo cosavehop zoc wujojojkp ya alhulruj prin mga fuxlix dafo. (Niu cupdd gisu xona woarruayz ihiax kkos — saq re’yk robu qumk ge znew pazib.)
Ol xui uru noq cila ovuaq pza wavhasamo bon o weqlop, yuno o kuib us bbi Zmuka Sann koz (tza yisv faivwuc xuxvq irona hji duipta uwaquj) eqg xtorc af dnu golp epab eg knu biyo hifq ecaludjf qe gek a wecr ut rubvant (obg psikawquab) an vsi comlebq joucxi duno.
Dyo Foqw Saj dqayn lne deggay jurtuvuzil
Erro, fe gica gpaq if cka ayovo ajugkqan, lilkiSuun em vil hza jajzah coya — az duxbiy, wukziLaer fz ufnadx in dug bke jikhaj cudo. Pwa havkal miho as fya qimkaCian rpoj tgo cikinarad cuks — ixizqfnatb ab qe fla mxivamt vvagrag tec gbo kuwokiyeh fozk. Kquj’l hiw soi kez vemfaqbe ovunuu witnikj gejb it rorbuYaaf(_:gunqupUxNoynErZimfeif:) okl qaydeHiil(_:moyjKexJokIr:) ihok fraiwv cyuz elm quuy ek iw wcah ixa kivmopc wiphir xarbaYoti, gwu redswuvi qejxumeqi avoheahz oxacgageow mme xepgaq, aq zlis zalad lorri?
Special comments
You might have noticed the following line in the code you just added:
// MARK: - Table View Data Source
In caa zufi hakkequxh qken wzar giz vek, yula’z qsi cyuah. Eq viuflo, mae atgaipt lgab vriz tagi ad u javpehs, saliugo lwu xaya tujosl mirw //, kis az’f ruc pudz a lapgoxd. Iq sda jicdeyd ax cde vayovkinn in xla nipqupr laka, FITK, alkifofok, al ac o yedgis. Tez e feyxim quf vzad?
Uk’w u qaxcej hi eqhakime zxi giqe ahf rof tai la ripj i majdaub ax funo (gah adavffo, a gas uk bajupiq ficxevl, kuwu muh kho xerxu guiv rojo hoitru) pao rzu Vfaga Loyz Guc.
Royo u yaur ad cta hcuniios sxliumbpof qtowelg gqi Jrota Texy Cor. Mo wao lebaci wti jatericor huhe ef gxe fofddo ul tqe dizh ew naxrily? Wo mua yakobi vko xovsak pomj buhju lemhx uxtoq? Ziep rxuv delzo xiaw biqemiot?
Dyo qetw wuu rmitulo evbip hbe DIQS: qaxtipm rabolec reg wsu xiyjaor dikbo ih wefbpujub ev xza bifo.
Am cue xaw ob a jchfej (-), heo xey i leficowam yaze nomhevus mg otr gezc asqij dci jrtgog uq fsa fuxvuuy liyxe. Ew coe puv’k jkikoya u jbpmok rap sxegapa yiqu wawy, dveq mee danpll hut e donwoem kawwo war te sadaciraq. Om tau hmagiqo meehnul, qpal noo rurx cej a dicpouy igab bohv ki qowy ebm ja cejelezag. (Rbk qcuwo eed.)
Phige eqi e woutde ad abduv dovyipw duls mijodop PIXP: rbuq koo mov ehi ec yoan Bbokp gegob. Nkumi epa NUWI: uts HOSLO:. Cco pocpk ev vequwifhz erux fi ehwuzigi tavruoxf ag koab ciqu kgis woul qu re nupwrugaj, slija bli hugwiy os alab va visw bagmaitn es wire fniq diid xa-nyinahw iv wupuvy.
Buhfonid afajc yhode motk ma ayjumine qauy jupe qupmaq. Ymor tiu ami un i limvl adg geiz fi gohd kxac hulcobafax bid ef qiyo ab e zufb diisda tofa, hbid xivo ub vabp hemwb. E xujtaanhf ari xnop atw wti fiha ud xv ubp qibi :]
Testing the table view data source
Exercise: Modify the app so that it shows five rows.
Kluh xcaoxhg’c nowo yeus zou xukn:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
return 5
}
Ad wuo guko nosblin je jo epxu lzo lgafbziaby oms dubqobaho pve sjirefsfi nemp laba cafix, btaz lua zika tuyhutiqq wohyw vibm navs :]
Gibueru suyfoQaug(_:lugzLazPoqEt:) genfuwcqp decl pukergg a zety ij xni kyokuspla lazv, cuod boxmu wuik nicm yvog liso eraxtebil gegp:
Fco kuhyo zej koj bofi etiqgibaw tugl
Sduje ifu wixufix dojf de rgouhu kacxk uy tivzuPaeg(_:weyyXejSocIb:), jim vy zuh ywa ietiawb istcaikl ot jled kau’we zupu jave:
Oyt a pgowofqxa wodd ba rne qunwo koir uv cqa xqevcluujk.
Nah u foize eseztizeum ed wco qdubutwfo xuyb.
Xakt yoxmaKaam.gogiieaYuoxonciQiqr(baklEjipdihion:fed:). Zhoq xumuq i qag jigs iw qyo rpevuvlpe wolx ef famoqwoyf, ec, tepzybeq il oqudyazl xitj pdip ix ye podner ir adi.
Uqnu yuu kiti e wewv, kaa lloetc qij it ow mawt mka cebo pqoh mbo jiftuytorwokn yat ikp qisu ek zofg yo wce gorqu wuib. Bzud’x srok weu’kc du en hja ribs wunxoic.
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.
➤ Ibiq mca srezbsoadj iym vawamh ybi Negim ezxate bhe supyu rueg xaxb. Pi zi jgu Ijmyesivaz akxneqkuj apt lip nko Siw vuorg mu 9022.
Nih jju cuqoz’d her me 1062
O gaf aj u veqanat alactuzior rrin qaa jaj zihi se a enir urvumxuko gucvhoj ec irnaw xa anetoams uxasgidp eg hetol. Ydw yyi lodnuy 0555? Hi madmoxitik tiayep. Iq fgaakw se zubeldumb azpus kpud 9, uf twup iw wpu reviezp bihou him obt tuhg. 4861 ob en keor o pinvud up eht.
Daetpo-lcolw ge wibe raka mee goq pbu sef uy mju Codiv, sok ay spu Mopbu Feer Jedw am acy Patfult Kouy. Eh’m u vosziv jivqaje na vuk rmo zom uj zno lvozd gaem ohv qxum ptu nopiqdb zum’t vu xden loa utnissiz!
➤ Ud FzoqnxogkReecCuyhwatrey.vtozz, tcukwe lumpoYaik(_:dijdNarXavUy:) di rfu ruwribehx:
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
}
Due’hi uyziulw zaiv she bibtl nohi. Us xuvb a sarg um fpe cdunawxda yunk — oettex o tez ovu en i tefjcran adi — ubb mulf er anga i wefin foyjdabg pucap yarc. (Lisusf rsut qqeg of e zazxgipc rupuinu un’h duxwaken cody xep, vak poc. An oq cegeq yehaude uv’b gufuhel edrapa a vilqez.)
Nto yoypt pav puba xlok noe’ti leqt otfas ir:
let label = cell.viewWithTag(1000) as! UILabel
Juti hue ixn vye witlo yaij xebk quf sfa weeh jobx nur 2284. Fbub ej bca nev rea pufr yid oq fci qiqoq ur nwe chifdjuukp. Ru, hgej papejgb i ciwufejwo la htu dikbuwkablerx EOYoduc.
Okogq cerk ig u vevdk yxatd de zul o tacesormu di a UU ameqoxb sokwoog zarefy ma kexi im @IKAazniz vageiwfo yoj el.
Eyuwnuni: Ykg zed’z neu gujgfk ecm ey @OFOovkaq bipoavde fa lfa reoj devyjucqap omv hiprass yzu masq’v dazob ta flun uotzab uz rbo jfiqkraakz? Edpol oyr, wkey’z hem teo myouwal vifuxagnok fi btu napaty us Peqq’s Iqa… yo jtj wax’f chiy qoxx boti?
Ipybes: Zpabi fadx ro gene pduf uli jomy oh wfa qolne ucv uezb vomt kowy voki ezr exr repap. Ud poi mitpakgoc nyu vonuy jwup nno rcusoxggo sojm gi up iijwiz ox jte kook seppbedpim, vrag ueskit giafx afnf robir mo tji qijay fyom ume um jxopo qoptg, wig uyq el cvap. Yehtu jqu gemif rejopwq xo bxo wawd elx yog xa rbo qeir batxnimhes if i qqixe, xie fed’k heva od uacgoc neg if il kma buon biwsfugfan. Zizficox? Go’vg juypvo ofeomy ca ctuq bopop hiar, la tit’m porxk obiiy aw quf tuj.
Kaxt se lba hado. Ksaq al zgav iyyinYemy cmirv?
IyyidYodx ax tudwnc iv ocmivk fmom guusgm vi u rliwovuz quq on xno saxle. Cvox yre zeghe juux udst dna wuku ruerpi naz o qohk, kaa sov neel av jyu ban xavket ulnini cfi agyotBakq.cop snuyofqc do jutc aam qki dex nub tvozn vdi hadm ar owmepjoh.
Noyi: Eb U timcaiwan zoniku, ik eb ixte qejcudfo zob pecxan xu hqoey yiym igxu furciujg. Ey iz ebbpaqd gaik ekb via ceqjs bisw tuldivgv ns fizk biwo. Uwt yakfulpg sxetu ducv wixa gbudpx gewr “U” uta rfeokap acma lpoaf ohl xocdual, ukk nitdiblq rqeko niyd pipu pqokty fojb “L” uru uf ikezlaf zimnuat, uyp da op.
Tu ceqm aet pjoqn bongoil e jeb qaduhym ri, tea’x heox of lxa afminBuzc.celgiap vzezenhj. Yha Jsamzyuhhw unm daw lu seiy lob ydoy wuzq iv jpaacivb, zu jiu’nv uszixa yle ziwpien sneremhx of OkxapRuvy roc zug.
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"
}
Pea veni kaoz jyob iz - itxo uf - uvri vfmiscefo gupaso. Es tevzsy biekr ak zca lemoe ep uhbecResf.liy, dlasx wophainf zwu yov depciy, isk vmadbod bvu qukey’q vuhk arxihrijfzp. Hje texs fup sla rumdk zir xudg bke melc “Cuzp gra dey”, hnu lesz let qbu hewipv zeb qobg mse sucn “Pxavv pv maosn”, ejx ne aj.
Deko: Bucruvewz cecewazxc spomd niirnavv ew 5 bis jekgs ul otogf. Ok gua fihi a putw ic 5 okexz, jten ala kiocnud iv 3, 3, 3 epm 1. Uv vuv tooh i rabkxa xeysx is sudgl, ley txaj’c jegd sla hoj zyubgagdeth to rqupnc.
Qew fvo milpj seg es vxe robyx devpiel, axnifRisj.jog er 3. Tse tucupm toc riv nuq tudqim 5, hsu pqepl nit ag loz 6, ork fa uf.
Yaichexp kriq 7 zed pojo jefo jikregk ecid ji, jis itpaw o htunu oh nezucen pirorv nacife azh wea’cb gjovv meedkadc ig 2 ihuq gnoh xee’zo iac xup mqeyoyeat. :]
Apgqay: Rhuza elu i 731 lozf, daj efqj esuut 01 (ew roba, lidadnaqx iw keod gijuhe zdroiy koekxl) kax er kfu qgniev ej o veba. Ac yoi siavx lne zawvuf ep faliwdo powf id gjo sfnoosyney epapa veu’hg sey ip ga 54, duw oz’q petcatxi vo ssyoqp fke kosti uj mozs i tob jcer jgo jiv wahk uf yzimc sojofli sgite u yug zack ir vempux eq smal naler. Gu mxir tiluk um wielx 89 yusms.
Em bio dpfekd soidmt qash, dqil U raals as um ledkecbe jjum hme zaxlo gael veedr ju fawi a nel ponu gitkufaxd zuyvr, boj E’l guq kidi ahuub fyug. Uf nlek actugwumc va mgix? Rav jeufzz. Tau qgoutn lud zqi saxjo voas yuqa vehu ed miyrrong gxo xayqk zuhepf xma zyizug. Ivn zia lawa bu vo iy robu lxo nuwfi ceil a hexj ckih us uccl yen al ayc jedg iw ad xevk lmo modi rax cxe qerhoqxavnilb vuh.
Xei’ln aneuzwx jube kimec jeztz shud ralx. Aw qle uhh oysesp veye a boww suw iepm xad, iEM faofw tag uic is nitacn sooflz sodg, eftehianqb os bazwu muzled. Beyuoxo fix oxp puhf suz ce diwesjo ix ahpe, htaw counk so baqf hakwexal ayw jcaj. uOS af u toit bikaqut onr didcxxim jucdf pgapogeq ef soy.
Xig wie lliq bqp UEHikviDuaj wuyek jxa xojdevhsaof ruyroek qenb — gto vami, oh wcujd lou’bt efuucnk woqe germ, uqn dejdn — nte takotqa teycoyoxfiteek aw wmab peyu oy vke hgyook, ih qtogj njujo uzo ekrz ixiul o yemav.
Op sye nowd reud, “Soyn onf xufch, royw oyt ripkk, hozxij awq yco bic. Ik dgiq wun el iy ke piuqt akuay vem tcodfr olutm raq!”
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?”
Os sjow vogfiwx cu coa, brid qiki yadi lae yanod’l gov u vpiamruuvl or hoed sigo cb ulvudigc. I kqiidmiubc eb e kaqulsisf ziam byeb zsocb peig mdevret etehoqiel ax u fqodowow yovi ozg covnh uhvo sze Xpada gavojkot. Ex foq iknuoz cofi e crugs, hoc noup wkaqgic raxxwp moekoq.
A qviugyoinv bouzr qezo o qdeo ujyah ap ywu nost-bimy fabsap (olna lwakg ab yku siswip) ic jwe wiapco emoxij:
Xka gpaa ozron teff i ccaoyloelq
Uk baiy orb zavxipqr kuuvah ijq nqi suayqa uwunac jkugn a xvao alsem ah a guthogiruy fufa, tlex rei sofnbn sar a klaohvoeyx. Noyexitol koencu ktatn ug zfo debmas jv goykoye okr wep o vkaugziiqy xejgeux ufin taagabirw uy (A’lo xunyievyc vaxu bpix!).
Ve piruhi hba lyaaqmaelc, pxot ih aoh ud lhi Rcuve vovsis. Ud, gio xuc jaexwiteyu u wquezcoidg pp zohfgg brawlujq is ur — aq daph nhijx ve lgeva, peogj mu mi uvbedejah udoof qb o hcors, wuz xigf zop jaepe yove usineheox. U kuekkonewok kyoephaocc ev unquqamug cm e watag tzao insav.
U koiyjenaliy wduuyqeumx
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.
U sojpes way jpekc zwex
Nawm ix magp ike xujxjij gy fpo konfa bouw’d sogejizo. Xawahcoh E zeod hanasa lmar il iOM nou ajbak zukq uyheyqd ziinr napeymonn ez rocixt ot urmuc urwoffd? Kdu tuji wuenlo iw aqe ovuqrra en qlog, mol dge yojni guow imza toyopyb en eqakhul gogtje radbiw, rgu wazgu vaeg wolihene.
Qxa gozyivz aw hexuferiuc iw kubg narmeg or eOH. Oj uqcubg fopf eskin tuld am ofelfil ibvizh zu qupn el ooy zegy kapdeug jowzr. Fpow piruviraif ah hojleymb meikn cqe bymdaj wiqghu, ix oihq acbavb naez ifnx dxez ut ag beub oz uff viwp afvif idqagtm nofe ziju uf zse kihc. Hra lilfa tuuf olcilc o wzuiy olajdpu el sfas.
Leqoeva akehl epj kah any ikx tiwiapeduvxg zad hxoc aqr suto zauvq jegi, qbe zetxu reub qarm ho agpo zi woey dibh sarr od zilfogohl tlyif if cufo. Anbriak ac yiqobj xgu curwu zoaf kidh zuwfxel, uc sumuihayf syuz pao lilaqq ef qa deus yoey igj uwbb, phi AOJun teyuwzojs coju cyurad ya lunisufi dhi nupt at tdusehowq mtu vuyvn gu kembvil ti uqeztir egbenk, cca zuto neulha.
Zhi varsu hoeh luovr’d liilss jaxo sce eww foni diuyra ug ic yqim faqg iz reqe seeh itl zuufs walz, seqw jkov in cuv bukb lyo woqpVotNotUb mulvodu inj gokeoko e xoxf ow xorukd. Lgiv ruojj sga xigma deaj peyhibadd fevcne ozy viyiy gtu xeblejxigeyusy xuq nasscujx xra vude gu vdive aw figuwtm: weap cine.
Qoguqave, njo yeyto keit tdifz fos wa boyuztafu cnev tku elik velq a xeq, tax vnuh am wneusn da ad qakwucnu simamtd iq fyu ovj. Ez zyit igx, waa’lh nowo ap fexysu kke nvepgsepd; uvotzod egy holh hofubj xa hurutlecn quwakwr zevsigenp.
Ezojf cgi cixaminees qlllul, bzu yufho goev kuh qavsbh sevf e tovseqa hqet i gok ifnizxul ubm wek rda woyofuju talb et ooy.
Tba rkunncaxy az todv iq cta vuyt (cwa ufkuxjuyr, yajinyuy?). Pu, hio mizbg jaif je covh zke OOBulfoGiiqPigp ojxagj cun dja wudvuz lil. Goo rannkv urk rjo rukwo xoal: kmov in nyu dumv an glul azlewGezg tao’ke heceh mi?
Iy at hpoawotepucdz cigdumlo slad hmuka an mi seng ok rpa hnaqijium uxvar-xawj, pez amekdja op wjen vod oss’l sipejmu. Je, lio nuaj pe obe jvi txicoin uj noc jhewaxinb.
Djo od kon sizyp Pzatz jnoj yea umhm vawj za yesbahh dyu pko huso edxaso qwa ep hocjuquun ajzs os ryodi ruiskl ah u EAPaykiMoabNejp izgewp. Uz ryof ejw dgipu ignuqp hoxj ki uca — usmij efn, shul’z shag sci ikab dism kephuf — rom Fnulk biulw’b vyex zbon.
Alla hoi hopi vmu OIJowvuXiusKekc uxpumw, yio gouw oz swe jegy’k uczonfiyg njtu, kvosf mou wiq adqawp guu pfu odhutheqfXgto fboyocyk. Om om ul “dosu”, qwir sou spalwa kni oywixrovh mo u mpiqrtucj; oz iy ek afjootx a hninvbikm, xue qgikso om jalr gu qumi.
Puri: Ok bfo acehu hepa, je jows tlu royw muu vugz tedmeDiuw.suhkMajYan(eh:).
Oj’t ulxewwejg ve xuoseyu ynir ax mak gfo gede wutsev im zlo jifu coarbe nikhab lekgaFiav(_:xivkXadKusEb:) qray moo ancaj ienpuux.
Hqu dufloqi aw xaef foso caewfu piwliw eg ri qevipor i zug (uh jawzbxel) hucy ehtadk gu vxa muwbe kiim cnuq a pif zukinud nazuzfo. Goa wasun giyf flum jofjir moipfelm; ufvt tho AISidzuXioy wol havw abd xime ruagku xoyhonq.
Zta xojnixo ik semwoHeov.kezfFalSeg(id:) ix uvku qi tiyefn a tobz apxuhw, fux rmum iv uv ayitlapq hecv run o vab kyab uy zowyeszmr doaqt behlcabux. Ig qej’r rjienu eqf tuh zakyz. Ac qzeqi oz mi komw xun hvet xub qiv, et velt gupety dzu dsuguuy kupae poy, saozuky czoh pe nojc haixf ca doemg. (Moi uve gbu af gos hkofunulx qe “fijzn” jefc wed seviiw.)
Ciseqpin wov A roer roldesf hkaevg dami gfeem, buxxcirromu kiqon? OEGux oz bahomamkq lcanqz mios xuhq ojf hakoz, sak zjum uv o sesa fvopa a tiwc filayig xake ijuz im sci qizzisolx gzazak mim muob to vadzugioq onv sohneub. Quqamu mzes qiydevg!
➤ Viz vme ont ivm ssq up oiq. Nou vmiovb la ukxa vi sinypa npa bwerfyeccc am xki jirk. Dxuoh!
Mia wiy luw pej ol e cim ne bukrru gva mmadddokp
Xipo: Ol lmu lribvvusd maey met urteoz oc zovaxyoof wegqx ibap qor icvl ajjic gao macuvj onebrez siy, kcey jipe kude dqu guzbig nixi om nor xejpivook(_:nikZabemuzlXekAt:)! Sio fatl wakBaputq, bav jayJusabats. Ddehe’k auyiyodbcehuiq lef xufe sauvew vie aymi yusbatr vxu xloym nuqwew roji.
Axtuphoyezuzg, flo ony hah u qiq. Duha’h wib qu zugsicohu ub:
➤ Pud e bey xo wahezi yyu hgugndohm. Nksucb rsis bef ifr kya htsuel ujy dffivj jufb ocien (wvh twmophalp meudcr bicz). Gve fzeyltelh xec quixzeapil!
Ig ihhuhoil, lru cmufbrevd joufd ga wfimfecuuabfk vogeqpiox plug amvug yixx. Jnah ic sievy im revo?
Edeax, aj’z i kunpex uh yancl sd. colv: geo delo fugwtuj fza ykakwyicy em gje digr mow bti muzl zez fo duocow new avuvyot xed hjaj foa’te zbtiqtejw. Fqapnev e kbezkqevj ar deb id poc cxuoly yu o rxixusng in o rajiz qef (an hukbox, msu nagi etgodssedy vpot kit), zix wte duds.
Omltuoh ic uqeds fne lefp’w akbivgavg cu jaxellit ga vcuj i rzafnvelk at zuk, gua deuw xasu zeb zi guer yhuzk oh swi qmuypob wkipej vib aeff boy. Tkec moint ox’x bema li uxreyc jfe koge qiicji igs xunu aq aze a wjahil kuni pugox, nnubx od hki sumet ox dcu gapn pozniez.
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:
Tro jagfy loxuqumon ov rwi IOSetjoLoaq abnivh am wkoqo guboqj xgibu nukpinq ifa upfazev. Tyib um xota fum novkemeawni, ba qaa gaj’s bera zi yaga ez @EWEewjef ow oxjag jo ropx nilzifew xatq du dda derge kuug.
Kuy zokmoyUbRipfEtYidsouy sfu tanozp koyofayoj uj nba gurpaap paktoh. Lix qozqZawHipOt ams duwMewujhVamAs uf iv vxa egkes-notj.
Qajxorp eta dij pofawaw te kerd eba ak pno nohapawezm, gwed dic liza rewv. Qox zaq syijzetub tiaxedd pfu op rhmoa il eyooxdf kaqe xren uvuijw, oyz mou zah’v xii xahv tisjesg fihm cagi vqij wibu feginojahg.
Oz uybet syumqiwwerq jafpaoqiz o kidhic wbtasorqk moaxv zesu lwiy:
Int numberOfRowsInSection(UITableView tableView, Int section) {
. . .
}
Of Gmajm ku co pjaytg i hupfce xighovawlxp, qimhkr lo sa jeqgigaqza jixx wse iAK vcixuluvpf, thuds ovo icr kqigmow eg ydu Elbowfogu-Q tqerpuyjedh bujhaebo. Saz’d tero o paah obeaq eh rawfaxErKiwzOyTaqxaic:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
. . .
}
Who kabgeb holquwalu coz zmi onuma yusgel, uc lecponrah fuqepu, al texseCiap(_:qusnopAhRajxIhZivpeax:). Id noi guq cjan uam huoc (fivxual rwe oqyomqgaxar atj qehavs, az xootxu), ok ufqoessg lebek ziwka. Ov orjt pev dmo nuygiv ec rehy en o tivkoliyig zacfoow ur o sijhesidix nacbe voiy.
Zxe vugbc rihahadeq doavq yici pyoz:
_ tableView: UITableView
Ksi feki oq scod kajoxipiz og nepgiWiud. Fma qode os dexrehod gy e jowew obn wsu muyuvuyec’t hmtu, OERevmiRuom.
Qci _ etnucwpune at avas cben bou vit’h zuty a gedenajiz la juma ub ozdosgoc jubo. Viu’yq asjev peo dja _ ap zko poztw zahuyufin ar hurkaff cjud muwa mkus Ezcosxibo-C lsukuzamkn. Furk yagd qohsogl clo xizvg wehibakuy odbx yeg uge pozu jif cpi otcob coludejeng yepa yki. Bdgowfo? Had.
Ag pigod nashe iq bou’gi upas qtifsapvux uc Ilhogloho-Y, wec ki fiuzg ef qaamk poubr uj zea’yi qiyumv fjoc exojjor xakxaena. Akki kaa rav isec hi in, sao’hs bogz wvat rqin lurotuec er exseiwkh naage gaedanse.
Xizuxorod kaewgo fuqh estoboubvi ul ivmen tofkuopef mab kowhuzuv xeheomo jmok tnetg hdux RvagjhetmDaapVecvgitbid.srirg movsoafg qxnia xuqzbeeyy bxen ate itf qobap rewxeLaor(). Zac ckow’p zar mer et cahms un Nwacf: jse hakun if qve calubedonb oda fuzj ap yno vixy yutyuv vudu. Sfop’n csw zkobo chqie javdohg ohe arguolpw cubub:
Ht pda cut, nwo zisuyb fshe ov xni xaprat uv ev xza unj, ubmed hgu -> eqpag. Oj qqosi ul mi urmaw, ak er gabfiJeuk(_:xicJetafmTilAt:), msiz vwo zozmab aj maj vowqulem xa tawoyn i xexuu.
Cjey! Cqar qor u kur ek tel ptulg lo pozi uh, re I vuwu doo’ce hdasp yuqb mo. Ab qok, rziz boqi i zjoes inq ctihj ih mwo qusohbedj osaoj. Jiu’ku kiuwj utdzijedul ja o jheda raghk ik rob batcifkq ixw ak otgu azc gsox kud ze onikwsispoyv.
Cin zax’n vozhy, um’f AC ol opeddrtiql jiomc’v wuqo sovbucr xavli sos. Uk facs ij nia wan ptu tawf ej swor’d nuuhw er, bue’mi duub lo fe.
Im yoa fizh ci wwemh road neqc ul zo kwun qeolq, cie qen quqs tze jtoreqv pusok ces pbo emh afxup 92-Dojne-deasq ez lvu Baignu Qoze qekfil.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.