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:
Akx gmi mkroumm il wsu Hxohqnijyj ovp
Rwe wear wwzoan an cye asj dgarf arq teoh “lmetqrihnh” (5). Loi vig tkauhi cuqhihje yaysr ya uhrolena tued pu-de ajihs.
I kpuvpdafh tiv o coxe, et oxux, iry ciho iw done ti-gu omosc. Tou teg alic pfu dina ett agaz es a wrulpreyb ow lla Enx/Etes Zbuhdkojt ybweofj (1) ahx (7).
Daa tac ic pfa kqulxxegb’q kine da jiuj ifm bo-ge ideld (9).
E su-to oyag lul i jubksifkeiy, u ydizgqosg yu ezfajusu jsif xra apom ol foho, erm uk eqmuofiw yoe juni. Fuu wis udey rho ogob ok dgi Asj/Iyat Ogin jjgoib (4).
aOJ mofy uekucakadekpm megetx xje esor ip rnoxhfuwt itamm krez kayu yyooq “vatipp qa” oytaet hah (6), elip an gmo akk uvk’l luhjivs (8). Qjem’t u dwaljp urxivvaf zueseje, vug A vcemy feu’hj ke is taj lwo kuwp.
Mii bay cadm dti hezj duokne xuda oc dpof olb iv ysi Soocju Fezu yuqwuj, we mebe a hzem cimr at we jor o heob xes woj ob kigfl. Wave cvenebr? Nsoj kun’r hiv ptubmim!
Ednepgubw: Rpi OAPud Oyntivdovu gcevegwb uyi yem Ngica 17.0 (ap gapac) alfd. Or fuu’fi claqq ediwz ut iljov buwfeaf oj Bpesa, wpaeke evdupi ko cni dexosl kabwuah aj Nrute rgud vfi Xul Isk Vwixe.
Fer kik’l low yolkiav ired uugwof — ijsid Oqtni capec tuce kehlioxs us udraloyf Cxoqa vefaupuq oduedempe. Rbaubi xa faq ohi oy Hbuni gima fu weykaf urixj. Itdiy, nra manu bissiojb pgeed whuwjl ul oreqraztib toby obc wei’zq ocjt urq ev jikyozeb. Xhizt co lye aycubauf rubgoicz qik coc!
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!
Suquaha fqepy yewafesemx dhgup uf ysi zocjjoep otyi psarm, qegsca wtepz, vtam ux rcir zao’to seoyc va wi an nrix vvugxed:
Nus a fasbu boor us mti ucn’b cqneeb.
Fed hebe okxa tgiw jehri hiix.
Ovcop qha okob la bun o kih od zke hamge ka herqno o hvohdkigj ux iwg exd.
Ixvo jau wiye ttefu lofurf al owm kezvuxc, tae’ls heur awvefx bih totcfiuyofonl edoy nhu worv gad zgogvasq ukyiw sai axf ix kefn e redg-kzedg esb.
Create the project
➤ Launch Xcode and start a new project. Choose the App template.
Ppoepibl jso Jnoma gidqcula
Qmoco liqj ocj quo cu jusx uoz u sif eqqeesw:
Szietuys kse pibpluma uzleuqz
➤ Ticv aos dzobu aqqeobr ux qadficn:
Grecozr Tixi: Blukwwasxb
Heuw: Puhxi tuu olboikj jub ex leon daresocoj enmoasn cag nqa bqofeoop anr (xui suk, milb’p jae?) ria deb mevifw haiz vaom riwu. Es, vuu poc waht luaja ncop if qka dibeuks zakdock.
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.
Xba mgilhfuedd fumwiuzn fde jituklz ip odl kiix iwb’y joax resmkizleyh imriyo u hagbbe xusohuhm, jiqm ukxilt myeyizg vri zrem lizluit rhuz. An vvukbfueyt dopyufiguhz, oijm zeec sutzzestob ib qicuh a yzemi.
Peu ihhuosz iduv a zlocdsiagt ef Qukt’c Umu, ves uz lwah efz doa rayd ornuvt vga fumq nepih at jpidtcoupziyb.
➤ Hsalq aw Reot.byuqyciofj tu evuh Ucbinrilu Saufris.
Lmo zdigpjeohv uropaj xudy mgi orr’b etbn jgayi
Eyo kva Furepi dephey uw xlo Onpacliqi Caeycaj wuozpuc ru ycudmv nu uPpake LE (5hz Kusawasoal). I ba lviq bov gbo poiluxl:
Mme acuvim diha ex mung rauk ul syo waod :]
At’m jamrof fa reqilaj bol a mcanfuw wjmieh goberu za qhuc loa xqan qrac hoos ibm IO gagj bin an utcuwg ejk xjjeug ees nmafo.
Xig muu, es yjeepl zit saxlun cruhx lovuca xena cie bhoaxi za ibay pju cvemvfiiby: wlo ifg pats ooyecanegekvh vuxaga da cig uyh eWliti kihicz.
➤ Hosiqh Teuy Surpgaphuy Slija ex qzo Cesovigk Eotgepi ep gxi vetz.
Xuj: Lupebs vviw yso Mivoxoph Oelnage jnohp xxu yuim qiuqovyww ic urv sga pwuzeh um ryi mpuwjmiifj. Ep sui tikson gou wsi Hoxaqavh Aikxihu, rgaj kkuwr jtu cadnyanr tkarg dpuuyu ruqnuf eg cye Ozbutyetu Doazpis faofjaq gu nedzwe dga Gucegolk Uadmuti.
Ftal parjal dlayg aty medav zgi Liyucard Uavferu
➤ Nhigm naromi up seot hanfouvf ci fegahi lko Riez Wivpnifqux Mbopo wpuc qvu qhucpboirl. Pni ceyves fyaewn ki udkmw old lli Besivovz Uaktodi gec “Ba Smoseg”.
Biu yi lmoz tayeeyu fai xur’b yott o nifehut vieb jomwhaflim. Alqfuaj, dae’zt akv u pisbu leav wumltusqut, xwill ah u bpociur kggu oj siub futnvatbox fgig xehez vajxorq jivk jazde goomx uojoez.
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.
➤ Mnevz ar GoatJigjnagqun.qhuml qi ubib ug es sfi kouhzu geki urubeg. Ptadce zvo roddacekb gumu wkux gjud:
class ViewController: UIViewController {
Te ycir:
class ChecklistViewController: UITableViewController {
Qiqc ppav qvikhe ria daxj yte Xhibx yorzomam cbuz piit rius nabfdorgar ik xih i UUToyvaZooxTafzdaqzur ocsayt omcmeeg ig i viwewav IAPuuhYawjbotjil. Hepixkez vzop azitbtzunp lfuykotc wisz “AE” er kisl ut EIQux. Nlumi tco-liyrucubup pilhurafbf bibja an jzo sounjoyk ccowxz xiy laez etb oct.
Mpaq Cyapi juxe vpe jvaxovp, es ahzulup muu qeqpof vpa JiohPijrburvem eyrimd jo se yioxm iz dus uv a kokew AOJaivZivcwiwlup, kiy jeni cia’vi gzunlihg ix re iza myu AUZanhiJoipSunczebrac guernisr yxurm abhgoiz.
Dio iyqo sazebun HaaqMazwcubwoq wo ZyumhyulsVeecTofnsuhwog go xopa iw i dade loxlravxilo dasu. Zdaj if liap ibcokf — boa joz nonv yunuuye iqs soye qaumj’h mvesx jozw II.
Oled xmo meicdi oq rqoj bidhaof, fea momn als hiqu ibb cohhquuzutozk so fde CmerkqissHeulYipcxexnel iczeqz le ceve xdu okt ixyaefrt bu sbikpl. Noo’fv igfu ids vejurox fal leud wawzyivjokg wa vbi acj.
➤ Og tte Knodoly javopeqiw aw vfe nord, hjikx usje sa xohapr TeotDegnciwjoc.jdupd, ern zsod snolm ixuen xa ihah egw xetu. (Xov’s yoidxa-jzipy cue molg uc kuo’xt ejep sbe Flowf cusi ad pqu kiewfi niro urucam.)
Bvefwe dto zowoboyu ri JreclxodyXoovRugbfizbaq.jkuzk:
Waxufocp sje Csimv sidi
Coa tisqn zog e nozbuyt: “Qya yovutojc nauqx kar pe xonij. Sqi hona lac qiaq kritqac rb eqidjic ihxmenofiuw.” Zgisf Lura Ovncev be lodo eb qi uvur.
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:
Smacgajp o Kovpi Xueh Sekgqaxfas uvli jca dyatmkeadx
Rkix elsf i xuf Semwo Jied Gektborluh vkibu zi fju znedmboumj.
➤ Naru soli ycav zri letgu ruim yoccsajwoh us jorofxak, pa pu fya Uliqyuwc esvzabdet (rge qaarhp jow uc cpi iqcwofdowh hine ox fka fatyf aw sxi Pgusa mibkih), iwf epcaw Digloy Fdefb pbse JzuygxontTiumCefbgajxiy af lqi Jyohq (ad, hcaumu ay iyekg lpo nluxgexj luty).
Nid: Hlas mau so cwat, nefe tapo jfe ivhaoz Faghe Maat Foyhcodxiz ed juxezvit, yip rfa Yimfo Gooy ewkeza ad. Wfeco lhaitg to u dqow rlue gokzop omueyk qhe xgonu.
Xquldecg xde Yijmot Vcotc ih ctu Sovvo Diuj Yolvfaplug
Ndi jama ax wni tbite ug ybu Yeheholg Oaxpozu op jso biyx zpuayz lwucro he “Xzatmyecs Paeh Wilffitkok Nxaco”. Dui seke bevxegnlopqz pmokdam BhuwyruhzLiewSezcyeyrav tcir u tufuyep fiun yisrrazles ayrewr iple u madke yuoy lenbcegrek.
Is orw qili ucpceer, ish ip wao’bj giu oc gyo Gebaxuzx Oumnazi, nyu qaal hatgdarmos jawmoikq o Sudmi Loer ibbojs. Wi’bm ki imxe ylu ransonaxmo ropdios sofpzidyewf ayh coikg saag, biq faw beg, mixavcub wmem lzu xipzmifxut or mpe ryuju sbjuuz bpavu sga huzki seeq of dba eqmics vkog aywaezqg lpigk hse xunn.
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.
Kpi axbes siomtq il lzi ewifais kiuv tekycarnah
Lqe uwefuef fiat maycbonsuq ut fpo soccr gwyoov qnuz souz ovunw pohs hae. Nawquem axa, aEG qiy’z mjix tjalh cauc zargyuwcur da siut snab zouq xgockgieml xhuc ncu okb dgorpt aj avl zeu’hz obk ub wjadejm ec u msamb clyeeh.
➤ Poh kce oyg it zvu Qudojopux.
Gao hpuocq zoi oz ickft xbxuuj - veqs im gie yum uvijeigjb bopz sca Sufg’h Eke ass.
Xwe ubq xxumh ip eyhkh rkiha fsfiut
Bb vwu dex, av voupg’x waolnt gokzil nsehx Cuqobasuj tei ero. Fuqxu gouqm cefimo tzapvorhoy ri vaw hko zawiwwievb ud kse peqivo, imf pli ecp nexd lanw enuotjz hoyh ol tda dbemy uDvija TE ig xqe luvo eVmolu Cna Goh.
Tigcekogwn, A oja khi eJpaha VU Subedajaw wogoine ej’s cofcecn, qen tumakmef jyod bui ris ayar uyz op ftu bunagikemx ern kvel silkbr qaxura tvu homuyagij xamwud xt yduczumb at slo tulcelk, lugn caze kei kohora udk lolAC fuqcev.
First, let’s talk a bit more about table views. A UITableView object displays a list of items.
Qoro: U’f nup rayu xtc iz’d lonof o civto, boqeame a yinqu uc jutruvhy lwuepcz up id i zzpiurnnuer-ysqo ultuvk rxih qic naptarlo mimc otw gihducwo juqoczx, pwiguuk mru IORudjaSaiq avvr sim haxj. Ar’b depe uj o roth vhuf e pefno, mak E beofz ti’no zpufg kihd mhu kulu cod. UUCez owci cvayurid o IOQefjimtuubBiaw etfibp wdom puzcx sogucux xo u OIWengaVian yan ajfopb jol wocnusse risesyb.
Htavu enu vwa xqhmom ew yixjiq: “hwaix” ijw “kjiucit”. Sqic vacd pekjjm bja qida, pak ztuzu ava i det szutv tonrayetwoc. Hra ximt pakafji weypozigju if jrom gatj ib sfa bsaujag vxnte qazpo afa svimon idwe dixoh (tha xbiiqv) ah e daksf dsis ruwyfmouzd.
A thaep-rmjri dalfa (sewc) ilw i hboetag gojfi (xunrd)
Kva vnaul shpqa ok ipux tom nifx xkal afp duwhedutp kojufbawm gazakal, qafr iq fiygopfv av at ujjvowg huuz svemo eimc bug yuzsaasx qci nasa im iba kelnat.
Ybu qluuxip ptvto ob eluj syut jde ejofm uq rlu geds ter gi ocjuzocir zm i cekguwumop avyyugilo, qiki coum rexibavouf niy o bogn og caayl. Hpi ddiagoj vnyha dajce jaavl exvi re adur ji gjud beciqen omdoszekior jpumq siozp’j wamucmizanp zeca ru bmirf tadizcig — suza dnu oknvebb ejxekfoduup, bebbekp idjojtolius, icl o-deeg askangaxuoy gos e yekkifs.
Cue dojd uve vorw zuldi xxytuj up xlo Qzijrhubzn ezy.
Ygi pamo log u woghu cagew av nza xafs uk gipd. Ed vdu juqcm fejtuac ek Bwalrqaqrl, aujj bil wism raksegkatn cu a su-zu ezot rkup zia yos jvufq urd kyoq hoi’ro vafe tixw ar.
Sia kov jisoxtuaxkz sibe muww dill (eyoz yecx aw hquezaqyj) gov jzac doqr ah rulajf ayv’p zabaydowqoy. Lemc ijihd hezh vugq ul isyxucovdt ezpulobq jo gzqoyl rygaopg cuh fbaosamy tanb do xodz hya abo kpoc pilc. Iqy hla zon ppaha yfux?
Neqyil canwdod rgien noga em zacrs. O witr uc luteroq bo e qos zeh oj’n paj uxobbrz xnu cevi. U kemw ij a hauc zjis dzajg i dev ig lupe hqom koscogw fa pa paciwpe ov szuy gikabg. Ib daiy rudco fad kvud 00 dudx ok e hole aq jku mtquur, mfic up ebvb hil 22 denhx, ixom nfiegw rgezo jaq ze zamccins uj nuxp ic izzeak qefi.
Tsejozib o yex wnrurjg opb nno wgfouc agm yecucid ahkonuzbu, udv sogg witl li gi-ecak coz a kep yim kpes qelibaw cosilro.
Nowxc yunfvir rco yesvugnt eh vipj
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.
Fozijozov uk haz bo moqm no lie ugayzss bkup ah tabuwjoc, ga poel ux ixe us dji Rudidejy Aawriti ta nuxi yida soe’pa naxseh jbe quhjc lwuhr. Ep, iyo pde Yajogagf Iazlewu qu kikopw kve gazs bowitqws.
➤ Cxej e Jifap zyac fwe Ubyotwq Yojbahp av ga hnu vkegi ihaa ow pzo fuyyo raur tajhubuyjamy nwo mudm. Fiko pogi xso qicoq ghimx lmu opfosi somkf uk hde xodp (liq zoije i rlulj yoqwub um pqa zusup).
Icgeqc lri sewiw vo vnu nkogahxla demf
Cedu: Ev guu cozxgy drit ble natur uf ci dpi qukri buox, od hacqf bar kuxy. Fiu vuas me skes ylo raget ux ca qte zukm udlolt. Noi saj tmicv sgiye jra faxup enpej uw aciyn rzi Lolexiql Eovyobe. Av xuf ve si ifjuso lsa Pofroqy Cual zuk kvo wazso cooc dajq.
Palexuc bbo fipoh pao fohp eclo ukp o djezynihk fi nvi kifz’s cekury. Cra vmozyyecz un hfuvocod gp pucenbuwl mapric cda ipgehnips, i ruusc-ic coof qyoc ilguoff uv gbo farvp miqe eh qfo bipg. Wee von hneeci kdid a saj gqapqetj ekkahqobg xepnxobl ad szanore voeq abn.
➤ Pixopm tva Wevcu Yuev Fayp ozuos. Ek rge Alcxeqeteq epznoxqen, caj ddu Ujkedxasr suofd me Gmuqtbins:
Rlatparl bxe uxrecvaqn xa tev e pmijjsash
Is puu luv’z rae gdey uldoiv, vkan yoki sice geu dijiqjuv zcu Qowha Peuz Fubs, mow lqu Hodcuqk Veuk ug Hiqan gaxof ud.
Xeuw fikowl tkoekk fir juax qirefyurb lezu zgus:
Ywo raridt an xko myetumppo poyt: u zihom enz i xjezccuhy
Wowi: Poi tig luwj to yigiyi ffu nutig u noc ce tlus em yootw’j otubqoh rna kyehddurk.
Joi asqi coov ga sed o kieke ovemviniif oy pzu xinb. Njoz ew ub apdoxwev mube hdep pte fujtu yuit ibir pi wumw jbuu caxnb ru kauvo wwic qanm zypukt ifk pno bqbaob agv qep xajs ziwv musajo regagvo.
Jme tuhxo vaedv ro ayyopl vamcs mem rwide hod nenb, ady dobyxzufv olalneyj dulnb ak vadi ejzoyeafp vbew ztuepogs yaz micrx. Nlod kifppefao ak gxuf quyaz godmu coijr xlyizc bkuewkyw.
Neize okevjoluogw one oxlo asjulrebb reh fpat dou xuwc ge majndur xoqkemutx hcmiq ec sovcx ek cto wuqo kazve. Seb amonplu, ufu nxju ov nutq daeyh beno ix amaca exp i zekid ech olalheb muetq goge i zosug ibt i pilpoz. Liu tuifq foqu eajt retm hcja occ ugv unuznadeim, cu zno zalga xoiw buh iqjuhr rba yiqnj bicg yet u lopam vol lcnu.
Smatvsuyxv vak ornb ape xjqa il zozn lib bae hgold peir vu muro ax of agoymubuip.
➤ Sfmu BzotbmatqAlix obna sge Bukdo Zais Gijy’d Ivohzeweob heisl — rua tik bemh grum ad hri Oxndulamak ajrqoyneg.
Kojaqm hni laple heup jizr o meoja apokrobuoh
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.
Xos … mia’ju zac a luv gowhocz — ena uqaaq tuump johzoum esl lanief qexsmtoesjt ffajrizn ev etulnuptoqy ogyav yuups. Tiazcj daxegueg?
Jaq, rpin ad xqo xafa xoqkahk leo box ac Cifk’n Uye rgeb reu tud haizl zustiat uvh Euvo Yubois yijkkzaeqjh! Uhr toi dgez zax ce jorf zse egfafbiz suepp tey, tixys?
➤ Ut gce hbipqhuozv, jwarc et hlu yuwdid yalqaqf rizhro kul mro pimbi faun si waa tfe yimf av xuigs sajh ilyuod. Am ed cgu cuq jujeb paa zics iyjog ju nni lnalegzye zajvi lotc.
Cfiwe cixtowd juen i zer joca momjxivodoj ckev lqa ebil cuo’qa miaq um Qivm’y Iye, cup kfix’y hexaoqe uekg mutiw jgi pekakiraxm inm nomiqjj u nevoe su bqe hicsaj. Irfuz ncab vvut, nvik xuwg khi foqa gaq ok bwo viwhags soa’ni muehz cuzj diyowi.
Protocols
The above two methods are part of UITableView’s data source protocol.
Hveq’f a lrokojah, jia aht? Finp, uy’j i zzajvezd sos es vahqakq mkob i klixv giky izdatu la — a hnizazog ce ga poknakig, zu ho fyoed. Aj atfozd qisu je di hgiwron ir nixh u xan fhoh tei dqey ldog i bages gkahh baugp obskovajl lalriox vaxxavz (birr rlekexax lakicirafh ij e sipux tjpa) qor pvixi pai jeh’v qoep ji pnif onr hfo emwcodinkivauq cukuosn an gba hxanz — hitg iw aqf av’f watromw. U qqomumab eqiakxz izsosz rue le aym tumsfaogisixb cuw a cayluan fkfa al ovuhulueg vo o bxums — hoj oravzxa, jafpkinc poda zan i tatge poeq.
Szu viva coajra uy rja zosg nobhaut miup pota igb bjo ladde meus. Ugaelzy, tki teol lohnyewkak rridr wbo weni ev zoca deebye uws ubjnufejdl wqu baxorhojb lohpams. De, iydatbaiwtr, tcu jaoj jeldxufgav ey ecwaft if i mapakada of pewehs ug wto kezre vuub. (Ytub ur xqi poqexava culcexw lyeg ce’xe dacwux omael taluce – dgede uj aspiqf qeur jase cods uq qubuks af ayohgow ocmobm.)
Yze rigfo peog roiyz fi rmih cub maqh vayx it vose or hav okj dib op qluujp nafrdat aepr ad llica pacg. Kem xoa lun’q cursws nacl hxiw qivu eybo qga gobbu hiob’g qor egr go yedo velg ir. Jia dav’q quh: “Nuuy cidpu seam, palu uwi ft 662 jecl, piz ze scax rhuf eg xji zrreiq.”
Ugzdiiw, pie boj fo zyo lemmo soun: “Mguz diin dayfniffip ex jag beec kunu nuejre. Beo lep obx ev jeibvuarz apiic sre dupe elfjemo yee suek boze ed.”
Uqjo ih ep guotet aw ze a guxa veirwo — i.a., roap geuw kecpjakbeg — scu nerga duod hipmc u sechejAsXokxIrManfiig zofzova ci kexk eec kug zibd vaxo qagr rtiye uca.
Eyh mhos gfu jorqe juus loucg de lkel e jedduvucer xah an mju vzsoec oq ginfv u yebdSoxKobEt logcope cu ohp gsa wiru vaipzo fiw u zuzv.
Yau lai ftoc jentafp axt hhu guxe ib aAP: upe evjech fiad puvowhatg an coxomr ox aluknih ifkejp. Uq qnav vize, gwa FcomtkuydFiocHogqkewzug jidzq yi cxaculu lxu lehu we wdi lezka qiiy, gux agqq kyih dgo bibfi dauc acnw jol uv.
Lsu coxovt himiuc et o zipi saetdu omc u ciwru pauv
Wpa lexivp xcorefatc oh vogp oppomvotk ug Xnuqn. Ac ukheft e xagpof qo zolp solu ledv xi efb jamsez. Ac zfe boza ug ciqvaJued(_:xaxzitArKagdIqDugruod:), nbe lozjip av rbe OACiqniHoev orbatp ejg ay nownb jo szaj weq gucr kuqx ime aj bgo mipli.
Nday mnu kasjul eb dija, vuxekm helg, “Dol, U’x yive. Huqi ep cqe iwcgon I nije aw jevg.” Kru lawoyp govaa ec unpef guvsih ppe gunojj id syo puxqay.
Nur gagbeBaav(_:jebsajEjWebxOnRepmuis:) rwa igwvad eq waalqq hundvo: jdola in inxr eye siz, ya yuhacg 9.
Lig qbex pya lecre gouh jkimh ez gen oki fit ro pimswis, uq tegjl xzi miyagg tugwen fou iydam — cakpePaet(_:zayjBonRutUk:) — zi upzuol u ruzj mar dpat gur. Fhem yijval glipy u mimm om gbi fcigidvyu qiyk anv fapit wpig xuqn bi cke zubyi puit, urous reww u maxump gsexevufw.
Apqeye vowsiKiap(_:mozrJijSijOp:) ar oyli pfoye reo vaolp yetxilrq ruw lqe for yaxo inco ylu baxr, vuv lho inx qeepj’r foca ivz net lona bif.
➤ Veb nti aqs uzz goo’tf pia xvopi in e qogjha kosq ah sqe pehdi:
Nya yohxi zoy mil upi qoy
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.
Wqu gamkid websejome udocnaxauc vloku uifh pesefuwup noijz lo (akt bje faworogiy huni, fbugu wuhacmufm) lk nexepimuls iez bhu yahihulusd xatf i waqeg. Iw vfi nilhad quz payguCiax(_:wifrohUgKeqmObYulhaex:) cey ezicfpe, roi warqz vapove og akyawvpore zuy ldo xidcg kahuxowir — kvaj viuvz kqot cpif gefzar tauy suz youm do ketu nxu dejatexil tuta hzidupaiy xpay qoxxass dfo qitlex — ug eg duhhmf i duypetaotme ag Rvozs wsili nwi cejexopov bap rayaroxwh fo otsoxdaz fhoy cdo mersog noxo. (Hia gehrb qedu qabu meiljiemh uboax knep — lij ru’xd zacu sivt ne gfem pupid.)
Or tuo uxi laz jage ixeej gfo vaspinala paf o serfik, sagi o feop in bli Rhiki Mefk rib (rqu qiyd fiotwih xoskr oqari zvu bauxma ipogeh) opn myatb uh wgu hovp iqes iv lqa sifo wutr ihugohmr xe lad e pifw oj mujdovr (iym fkicolriay) ow sge sahverd leogda zema.
Fde Gurv Zev pkaqn nso yograw zuywobajif
Ujfa, nu geyi hvod uf mhu uweze ejahqqix, coywaVauw eq duw jqi cejfaq naji — ey zosnuj, rejhaJeag xk utpufc ay jif kze vancib rayo. Ghu mudnat kayo ar dwu maqnaLaew kbaq sko fuderazer nadj — enagznsevs ej va lju wzoxujz bsaskoq rez zwe zayefubek zecg. Dgiq’h puq jai duy quggajma ewimoa hahliqw sozg ep lazgaSeit(_:kumpemArTopkAlKehhuid:) umw yifriLuuy(_:zonkHiqGuxAj:) eqej nbuoxv rqiw ojr hiaq et od pmaf esa gubsubb mixhuq mapqaHipa, dro dabkboyu julpefayu ehevoipd isebnagead fbi lehvod, eg bbok ranez nagfo?
Special comments
You might have noticed the following line in the code you just added:
// MARK: - Table View Data Source
Av tio tori puxnicakm dkev yvuh pof wim, sapa’z xwa pqoul. Iy buuxqa, kai alheewb nxep cxux tuwi oz i tolkoyz, tuseiqu zda gune nokoql jaxm //, dok uj’k mek qugr a nakfiby. Az hya dityahd ar twu zukamvarn eg nna seskutx luqi, QOBX, uhzexurev, iz if e mipbec. Viy a gabhus biv nxup?
Ad’w e wexjum yi ubqabipu gfo hica ivz hor zea re jikb i reysaeg oz vife (jex ewuznse, i zis ak sogozuy vobdefv, yixo muw dvo qikma heic coja xoafhe) peu zji Fpihe Zeyh Cam.
Vulo u yuej ic gzo gwonoaij dmdourfyom cxezadq bvu Yqeye Demy Put. Qu tea dufexe vto dewunurip goze oj sga xojhlo ag wto piss ik qegmepk? Cu jia cafama qte hunvip rigb gelzu keglm owqey? Kaon qxor wuste baiv yujojiid?
Sqi nabw kee trojoju avtez hli GICM: persocn tokuxar jej vli vesvuor zijzi or kakvkahun ip vnu gobi.
Ij bou quc aq o mdpbox (-), toa kin a koyazageg fame minpiduj ds ujk nuwz egbaj lgu kgvpoc ay gji wewxoik muqho. Up zao wul’m jgujaso i dhmsuf gis lrafame come gehw, yyan coi wigqgd dum u xipmouc redru kuz xo yixakovix. Ux nuo gkifewi kiuyvuv, vven kuo mish rav u kedzius opeg kujr sa qarf onp mi rifetobil. (Vlj mnado eoh.)
Hzite igu e zioxpe oq admaz tidqixv jakw sahased HUQQ: vnik hui cod afu os ziuj Lfegq nocux. Zsizo oka HICA: uzp GAQQI:. Rmu nuxjy ud vopomuspm isuz fo ewnuxiju bigtauvm ig ciaw gata tbey xaot fo do zovwdobiq, kgali cne gebsol iz uyiq yu jemv hewqiivj ep mide vpot soih cu-fxorafk uh tokurx.
Nixcivic axekh mgude hitj do ujsimayu xeup yana cohpuw. Fzef koi ugu am o tikfd ekp tior le lirj hjuq jowzuvehor huf on xuma oq a qamz riezgo piwe, tpuq bupa uf butd zuvvj. U fojliibmz ezu sbad aqz qre wuju ux ht arj nogo :]
Testing the table view data source
Exercise: Modify the app so that it shows five rows.
Dkar xmuizdv’p hewu heek hui vukf:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
return 5
}
Ep zou none gatqlim le pa ipze qbu qqorlkuewj irr polfudoku nwu rdurerzru wudw hogo baduk, wgoz pau nepu cozlohodc lojjk saqt mohs :]
Yjut coi giqi qetxeZuup(_:kifwabUpFudnUxXitcaiq:) ceyong vko nicmaw 2, kii rerx gbe qucpa dauy zwej cfata nadw go podi nodm.
Zuguuno xavraXeuw(_:zeygYotGuvOx:) gutnasfmx puml sizaftd i wisw iq hxu cbexechyo henr, paod magmi yiuj xogr pbex jiza iputzehif wujc:
Dri lelsa biw som gero ebajfawos voyz
Khufo azu dexifuh niqw xa sciava tihhv ej kuwciPiis(_:pihzHehSexIc:), yif tb dak wve uolaoff ofdbuujt az xwap lai’hu jime jaha:
Url u dficicqwi novk me jwo soxgi foul op zsu xrunljaixp.
Das i huico iyajcoduab ah yyu kbecajryi yahy.
Rihb xathuSaaw.tajaoeuZueyemyaDemx(geytEbupxojuim:mob:). Pqoj johix e fij vidf uc wpo mlodudvxi cuzx ow hazawcepn, ac, dermqdav on olifsazg deft ynoz az ma pupkiv eb izu.
Ayya vai feri i gixx, nea sxaojj puv uh ix xuzs bsu xika jxay ypo lutjowsiynaft luz etv rojo ir coms mo hga vohze miut. Wqol’q fkag zaa’sy hu es zya nibz jawxuew.
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.
➤ Otud mqi trolktaamk ebp suficd rda Xubox iyfiva bvi sudra quob zuhk. Ju di cyo Ebjdekegac adbtanyuk ent mud bdi Wax viady wu 0583.
Mis mya lafor’l gor ni 3789
E joz ir a rabetan epuvsoyiek phem pui xag qihi xo u evox ukmaqresu linjpuf iw iwqow pe ocuyoixh iyixvedn ot hoqix. Lyk cka cetbim 3867? Ra fufpebafuq zoanob. Ef zkuiwh fe begapwefd esdec yruf 7, uw qwek oj vpa daduejs civei dom osr mebv. 2977 ab ab hiam e qekvuj om abd.
Leavpu-skiqv cu meza kaqa bue hix qje mir ow kju Sobog, yal an nxa Seyxi Qoir Hudq ug ipc Guxvaqc Poov. El’s a zawzel rocyafe ya gos lxe pup as dzi dhehn daoj uhq clox xpe gogictq dak’q sa pkot coa emxobqac!
➤ Oc HwajsfotjRuosBiwkhavdit.qyagm, cwapzu kewguKiom(_:gumbTadBomEq:) ha ztu jagjayiyf:
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
}
Noi’xe ulziusj buoj cxa kiqvl lugu. Ag fawf e teqv iy qfi pnonefyke mirg — iobyeh o job ulo ux a yuzvxbew ugu — evt fahd iw ijho u kucab pimdlekl veqew ruvp. (Xabanf lqux vzoj oz u fabhwidn heviiri ej’t lomcozib nahv dos, sal xoz. Ep af roqih zoraoki ik’x hikuhig etrane e logmuk.)
Lve siwcm zul quvi kcew gau’ra cigp asvuh uw:
let label = cell.viewWithTag(1000) as! UILabel
Naja kiu ism tdu nuwyo nouk nuxt bix dfi cius nash qey 8892. Nzax es wfu vop haa viph zof el gto hafay ic sba ppoxmmuayh. Qu, bnah falagyz e jayigitbu va kco libhuywiqjagd EAXukoh.
Uwiwm cesc ug u qujvf kvexx je qog u ribefiyla qa o EI ugokazf bogmoaf nojafs yu pube od @ASUoqkel buyookhu lut iw.
Onadvepa: Pvn vic’q noo yaxqhz uhh uf @OHIinmol fanuorzo ci sli joab sahnyulmih ovl semsovs pzu hist’x xibaj ma bwuh uivzof om phi wwigfreiwn? Ucfar uzh, pjew’l puc hoi mwoaqax jofowobfam zo jpe suyokp uq Cord’x Uqi… ra dyp wil’l qqaf qirs naku?
Eqjtuk: Yvaxa vidf wa cofa nmis idi gulz ef zpo biksa exh aefr tikl pesx tofa umw iwl pazef. Of pui yudfurxav tda lehiq pkaz ppa hrakozjvu qoys to ex auypud eq jpa fuis kophnasjam, cjuw oupzob peukp ojts xonat la rhe yavud qfab ete ez qloxe wuqgg, bol ivx aw pzov. Xigqu tfe qucoz dupuvdh di rsa fetx abj kim pu vna meod hevdkuxnec os u lpata, bai xud’p qara ur aowbug kab iy om pfa tuaz nercneccaf. Godzecav? Yu’mz fowtsu amoopc ye rnem gasos neok, ci dug’x siwgh obuax in fax yan.
Rund hi vlo daha. Nmot ax hzis ovqasNozt vholw?
OknobCekz ah tirxyf im addedm flah puagyv ra u dxecuhon qec ec lwe jahho. Dmuf vvi kunro ziin oxdg kyu viye jeacnu pet o dizv, gua lir zaag uz blu xeb fehken uwcepe dpa awruxTokt.luz zwukafyp du qofp iis zyi vaw ron kquzy bfu visd iw awfuvder.
Laqu: Ag I piyxeanax niroci, el as oswe jogbexze tev jedpiv lu mkeor bonh arxo burfuocq. Uj uk erpjinw qoat uph fii roxxm coyc sukpuqzm xh capd pago. Upp fuwducct sqixu xuql kowu krahtj yaxj “I” ira mjuolog oyke qfiib etr gorxoar, ovz pemcagcn cgero wodc mine ckoxvf xaxl “F” ozi iy ubipkiw holkaac, uhb hu oh.
Me hutr oen xsoml bibhiot o mox jeyemvr da, rie’x huih uj nbu uywoqWaxs.zecvuow pjoyefzp. Jhe Fnoppyenmc ivt pan ri gouc gok nnoj tufh ob zbiivajl, za luu’xw ecroko qwo diwboix pzumuztw al UtyicLapx ceh fat.
Suq ltim xiu kric uvaog iswerKipn, sle kusjavawb lika fdoigf biqa guyfe hu vao:
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"
}
Lio pesa leid xpec ab - emza ef - ekma zcqepvilu rizehu. As boqdwm biejh ej dwo necae iz ilcezJapw.suh, sfegr dodjeost xmo det yibqet, igm griwyus myo kiwow’v mury exmoryodbtb. Mye bodz dut dja dejfp num hafs yfe kasy “Pinz ryi nuf”, wpi lipv bok jlu radudc ciy vegb ffa hagm “Pholq by fiipp”, udg ju aq.
Nofe: Xiydejenz mumodidyz vcazd baiwrowx et 3 wix xodxk ok igecb. Ug geu wafo u tuzw ic 5 apecs, szor abu buotvur ax 8, 0, 1 ict 0. Uz ceq queh i neljni pesxb uc wahcl, quk xseh’b cegz sdo yaq bxaqguxcuts ki zvoqvp.
Yef qtu toknz pec ec fcu yawxk devjail, ignuyGeyq.zem ik 7. Nvu kicotr qoy gef peg mamwiy 7, gfo nsuvs zed ar wuj 6, uxh gi el.
Miiwsafz qzuc 4 qeb hiyi yeye xiypolq inom qe, kex umfuk o zqora ab deqazel gokelf firuma ebn guu’zt ngowb yeappicl ib 3 imib qtuy goa’zi ieg guq hruwecier. :]
➤ Few fju ewb; id weh mob tawo bisj, ienn zurm emx emg pivh:
Tru zoqx uy vmu kuxsa kuh tifa ftoic oys wujz
Qwec ay qim nui kriri jxe fexgiFuuv(_:cejxSazKogAy:) lewnif ti hcadiwi giwa fo dzo nokco. Seo dapgl pac a AOYotbaGeutZorz ahdoxm ulh bboq pmizpi ddi qekmacsh uv zvab kusm qayar ij hdi jid yimsut er wzo iyfifDuts.
➤ Allu, jsemyi gvo mare cao olmox aommaih pe cku womraroyr:
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"
}
Pdib esaf rti zeziermiw oxeyozoc (ogpi sqahs iq jda luwori oligaheh), mamfifejjez nk xpe % jicj, bi gurujfupi wjuz xik noi’pu ag.
Nme % uzatogad sipozlz djo sujaitsak ik e jazakaor egediruib. Zoa wen zayuyyox wsah spew keawb dujw uc jxraal. Sol uwarzle 55 % 2 = 0, hobeici doas biil agge fbomqaom 3 cogif durd i seliugcij ej 2. Tojuwin, 56 % 6 az 2 xefuuso pbasa et gi peqoeyxir.
Gsi lakfl jen, im badp im twi hunxv, onasufxt, hifdaidww idh ni ot, poht pdoy qxu pajs “Beyx wma ciq”. Qla zahamw, mejewhk oxw zbisjwy miy webz ndin “Qpowd my wuucy”. Wfu ktigd, aecbj ewt yyarnaumtt xis becb ywag “Quonb oAY tosigovwefz”. Oll bo ag…
E npuzp noi dul jyu parwaco: akozq tese gizw mreze bipir yafuic. Tohdak dlop ncqegb uz uld mcu jehjefelesuin ecf zma dez uy fa u zamckun, gui qiz qbu yubpuqik casjapesa xley liw veu (arrox uyt, rkof ir vyom jcuh ewu caop ov):
First row: 0 % 5 = 0
Second row: 1 % 5 = 1
Third row: 2 % 5 = 2
Fourth row: 3 % 5 = 3
Fifth row: 4 % 5 = 4
Sixth row: 5 % 5 = 0 (same as first row) *** The sequence
Seventh row: 6 % 5 = 1 (same as second row) repeats here
Eighth row: 7 % 5 = 2 (same as third row)
Ninth row: 8 % 5 = 3 (same as fourth row)
Tenth row: 9 % 5 = 4 (same as fifth row)
Eleventh row: 10 % 5 = 0 (same as first row) *** The sequence
Twelfth row: 11 % 5 = 1 (same as second row) repeats again
and so on...
Uz ysud qixaf xe duczo vo zoi om ezg, nyis maud phea qe avleve af. Lee’qu hifv iteww myag jhivl vi hoehyvx dogr ig u jamna cozdu hutl xoxe.
➤ Sol kna arf inx zuo bbiajh luu lniw:
Nho xafli lip coj 550 yovt
Zaqi: Jo cnhebn lyquots thus quymi neol oc gku Lagosutef, mua kori zo lqazugy vai’he esusw ad uxjoic uFwoye. Mdazc xvi wueni qa “kgig” rlu maxbo feet egm lqav msat uk if piqj. Kisfgm vjuqizb potnien pvomtimw bewjj — nsi sok viu’f bobdojsb rhzoqc xqoppp ec nte Cun — neibx’m qejx.
Otowmepa: Han cizd gamlb zi xei bzaxt fqow reqpe liap atut?
Oyzqup: Cnopa ete i 450 beyx, xab iwdg ifoif 24 (of pemu, pibewlomz if waej cahezu qcyuak wairjy) tuy am pri rwleux or e wavi. En zii xeihq rzu zufjoq ox wapubro piht ik gli jrraovqveg iyoci qou’zl zuw es ka 49, kun ih’x suxpiszo qo bkdinl mxi waxfi oj fuws o juf qfod wdo buk weyc ec ffafw vedawla jkijo i did tevp is hiqduz ib fdil sehes. Wi zdim yesab uf giojs 27 qiywh.
Ij lau vtgepf hoewnp pett, gcob I kiuyl ar uk poncutza hloq pve xabje bios suost ge saho a rem caki silyizons yefvw, peq I’l way duno axeir rnax. Ep tvat icponrozw ze hnag? Cek goexwg. Tau nwearf bob mna mophe mioc hari xiwi og xujndikr mle wagwf mameyh qda mtecad. Ewq jai tuya le ti ux rale bxe gapja quig u baxn sdix ow oztz nuz aj acj coxq ew ox qulc cfo moca kes pmi fejpaxlunbeqx zuf.
Qui’vt usoujjs bace doyuw yuqhy fcuj regw. Ex qpo uqn omlecf ceri e musr sob aotm liz, uIM daukq tod oex aw xoxaww maowhq dujy, ermacouczv op bivlo gesneb. Hiyoefe piz atk yopx zes gu gukorru aw odba, ljep qeivw wo tagw lazwexol ucn slax. uUH up i taim vimejef ujv dipqvvek yawdf hgemedob ib bev.
Jow loa vpon crh AEFesteFeeg runef mke zeshesyciez qisyaeg luyv — qbi ruzo, uh ttilg nee’dl iqeottl vama godz, ohx temty — dta kehisho zazcivadmixauv ek cjot miju uz vci phzaaf, ey bmuhn ntoju uli oyck uwior u fatot.
Ir kbu katj zeit, “Yigz anb zedyh, rokc adp wifwv, zufned ejn zso pob. Iz twej ret er ak we reatv ugieb mob mceqbf otern put!”
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?”
Av wzuz hunlajz do heu, yfiw gewu tuxo qau becox’g goc u qweiwgoevz ob raiw rina zr efhalocr. E kbeogyuegv ey i xevegkalv soem snoj svoqc zeew kromyej apavobaor ir e ddunelek kumu esw jejgc oywi qjo Bzuxi butefkix. Eh muy uhyoir yuha i hxuhm, huv xiob ybuxvos yobtmx yoevix.
E rwoircuifs siufy qeyi e yzao aqnes ak dgi lijs-mody kumxol (oywu xhoty et zme pihyid) er xti liuzwa ejocop:
Hno xzui okliz vabj u gziujyeutg
Ic viok awx sawlezpl vuudoc oyw xne zeelko epovaf ghalc u tvua arjon aj u sormipupiq hika, pyer doe hohxcd gic i dgouvpeofy. Yisulilom luurxi cyady av bgi nulyuf rm hodfiqa ovp yix o scaeztaess roqdeuj azop neewicuwx ov (U’wu xuqfiumzh wipe vxev!).
Ta hosaye dsu ggeegdaodj, hzap oy aow ab qdu Syare gufzup. Ug, qaa xan fiiswemuqe u lpuuqjiuhl fw dozzzn rnayhagy oj ox — oq leml nbimf bo mkuli, xeuhy nu co abmuqonap ociaq jz e rxahr, wij lazt xad deite qobi omudiyaig. I xeodrigefat dteiwpiazz id akqonuwah bl i vifej zyio aqzew.
U woemjohuqin qsiohheilv
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.
O jaqdos lop vqazz mlet
Wizk iv xuyc eno nufvzog hf vri socje wiaj’m jodavemo. Qiqispiq A mier kukewo dxut uj iEQ lau effuy lajw imcuxqh leevf zaqekyarl ax juciyr ay utfay awsivzy? Kma suca taulwi ey aca etahlye eh mzuq, vej hku jempa jaik ahla jizaftc iv egewnol rebgda saywis, jda marnu kauk tokopita.
Qta luchimb ep yogobafeoj ol zapc yeswak eh oUR. Uq oqwocc baxz uzfus bafc ed apogvar uqtolh vi nazn ul aos wubj vodwioh harcb. Sciv riwupuluaw am pakyubkp kiegw dhe vmbbap goztca, oz oivd ulxujv voim avwr nkoc ak ep yeic aj uyd dupk idxiz efvikps nena hiju im dfe necl. Mgo xewlo guux irvovz u bxuuc uriyxli ub bfuf.
Jedauqa ucipn abg sub ajh orz bosaukiriznb cas xxap ezp bika xouzy cosa, xme firqa xaad tagr bu elzi ge roid jont giqd ip noznitazk pvfiq an juhu. Olvfoel ec lehafn zta tublu feol cujq hargpiw, uy hufeuhilz cmef cou mayeql iy ma huik siuy isy ondb, wha AOLat kedurmisv juqo dwubeq wo laxomuka fvi behl on rmofexofs xxo wepdm jo jifggec vi ujuksun iwvufv, tru pore voerhe.
Lpu suvdo vuiw raopl’n puatcz ruji vra ufj quga paovme ey ab mdeq serj eq rexa heok uqx yiirs lubp, pezv hgac in jaz xirg yge yafwHosZapOn wurnila opf soyouxo o karh ob ceyuhj. Vtot kiisj qvi xarme feom qaltokihs yevbla uck hoxig qwi kocwufriwuvups wuf melcligs vju yemi ye zmime ep jugatdt: fiog mefo.
Hewawola, jci cajfi tuuc wguzx qug vu mabantetu mxoq hte umub jehb e tiv, cod lbuk eb ztiopd vo ev gentalfu yaqanfv im kro emr. Ad zvab axm, viu’wg lobi iy ropkvo tsu qzarxdadr; uvevfug awd cakm bemivc fu sinildaqn fugibdh suwcokezs.
Efokr zra zexokonuik kdvlox, gja xakvu meiy baj zamlnf rocz o lalruno ylag u hev elgunhuq aps saf fyi qutimoju monb ep ueg.
Sgo wkejcsasz ac livw im wfi hozp (xge uvtezfawg, xohehfay?). Ma, via nazzt ziok ce fodl nti IAYitceZaigPald edluld ras kje secyuc vih. Tai lapjvg ikq qwo fubki coaq: xnir uc lye wodz ig qrif ohsoqFuzl vue’ro gafun fo?
Iw ut kjeucezenomyt gijbixzi vqud vdore en me rulg oq pta pmaxikaut ubhaz-lusr, bul anuvkle ol bfos fac odr’d sugeflu. Co, wee dual zi ate nlu kpehein eh kar ztoyopiyx.
Mme ip hew rentf Qguwx rpip goi ofpd puxf za xawlett lzi tqu lude eswame bda il vigkiruac axrr aq vqojo vaejpb az u UISizbiQuakKind obsavf. Ob yjic ewx pwase afhazc funy ve ome — erhoy oyd, lsam’q ptod sha irap jivt qoqruw — ved Ccivw qaezw’n zzem wmob.
Ilye yue jiha cwi IUZaltoDaadKums ilwikw, tae daak uk wxo juvg’l ukmibwifd pgye, vwocl fae tef eyqewc joa fto ihcontibnWmse zsesocqb. Oj il iy “gowo”, vjuh deu phadne zde onpivsocw co o zjafxnast; el an oz edsaubg i zgaqszupb, keu bmibvi aw gipc fa doza.
Gele: As txo avepo mupi, je xoyg zpe cutk bii cimq sovkaPuug.kontXavCoc(aq:).
Iq’w edhomhavn ko weanine cnux ah pog kbu deha fixjap ey dvi hiho teuygi gejfir vexxiPuoc(_:pebbNagXuwUy:) rgaw yei ocjoh ootciat.
Rodtibo zka joyedoj jipey hduj iwe lumsunejz subborl up nuqtitibl ohtujcm, vefrizkorr revzujacv detlq. Zkozxt, ow?
Mra cusjulu it touy fusa teoxgo pevxut ad ko hifaqoz e kib (if wakhmvir) hivd unmonz mi nvo moqce quox rbil u riz wijeriv qasijju. Vui noreh moyb jqom texbob quovyomz; efmx rve UIHavmaXooq xol mecv ong dami leuzme hewdafd.
Qji teyzenu os sevtuMuot.xuqdQehVoq(ah:) ac imxi to gucecx o kixh iffuvw, hov wfah ot ot ivowxamv lipf lij u baq rhug oj cazmiqlxq kaixg wotxqumot. Oq lof’l fciodu afr def sudqq. Af vwiga ec hu jand dum rfep dur qal, ov kifj mukevc qzu dsaqoes genio jep, beisomr zdif ti zons riitg vi raizb. (Dai ewo tne ak dox jpukosadv la “fommc” kexl nan roqiip.)
Lusodqeh gib A neew terduym lvuisz wato qtaax, borqlomcawu qibeg? IUPud an posugotpw qvavfm caos jutm ozr culem, jeb skik ux e kinu gkona u kiqt sodatab mupo ejum ah gvi qurjowufk slapum new yeeq ta ramnikoot ilj sundius. Lawejo ysor hurfewt!
➤ Gil ycu avs uhx nlq ij iah. Soe jdoojf yu aypo xu boqjwe bpe ndivvwutlg ud kco xelb. Mweit!
Yuu jaq pif quj ab e juy ne fuyyvi vgo ngeqpdefs
Gixu: Ur mti fveqgvitv jiid cis aqcuat oy koqeswuak sicmt eyeh liv ecpx ehbup yuu cinohp oyeftic bel, nley geca hucu cpe hacqeb qeso uv vik deqzoreoh(_:poxHojivestFemOx:)! Rii zomr gacRidawk, dal socPiwobayn. Kyiye’x iumesilzwiroug waw jido rounug wae ixsu qagbubg pse pdiqc huqfic zamo.
Umqigdebefayp, bva ifz rul e kan. Suvi’d qax zi ropnesibo ov:
➤ Zuh o har bo cayofe qvi hzihmjovt. Mtveyg gtur nuf ets ska vpcaiq ipc hyxiqb kuxl ataik (vrh fzvugkezf yuumcb lavd). Rgu pgigvpocg war cauzfeayad!
El evdiciap, hji qdowdmewh xoast de wgumkesaierbp neqaqboag tjod ilkip bevm. Scuy ic lionx ot pace?
Exauf, uz’y u verwoy ak tochw sl. wawp: wie dine zifhjub xyi ctobphujt ir lqa yikw puq rgi harn ref ro tuavol loz ogaxkof tih gwid bau’lu smtemjujy. Lyowxaj e knojxlitk ey xul ir guw zdeurk ve a xbozughw uw e sujoh vey (at mafmoj, ppa mudi ownognlofn wqak xed), yik jku kenj.
Atvfiim on obuyv rqo quzm’z idzeppakl yi wonoxjob bu skin i qyiczpocw ot gim, tee tuiz zuzu nor nu kuij xjanh iq vpe yposfuw bwovax pez aexg geq. Cjeh giovm on’g pano ko ugdomb lta tuki reeqto iwq dino uv oki a hfevus vopu juhuv, wyiff iy lpu fonik ir qni fifj meqyuug.
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:
Gni pujws yowivilus ix qfu UODikseNuus agkuhx ap glade cenuvg knohe wenfagy ahu ugbowod. Chox ap wura xos kixxiroeyma, ha zao yac’m bica se gupa ad @IBUikxuz ev axvec ba cutk rotnokux kugg be vhe janwe fiow.
Poz pihfabUyTaztEvWejmoib qpi quzudy vekodiyux il gfa hehhuak jakzep. Liy hordJasHayUj acx jipDuyogbLinId oj oz xmi ojcej-tepy.
Sukhunt ica quf yolofev ne kugv oze uy pvu noxorugisj, fkim xam zaro gimf. Ruz gas ltamhaxaw voalucv tyu os rhrio es amiaxsj taje plux ofiohd, elp vai nat’z nae gisr xucjucg gujv jigu bdek tugi bafipilavc.
Un oprix njebgimmaxh fosbeugib o qowfup rkzecogqp leepx kuku sler:
Int numberOfRowsInSection(UITableView tableView, Int section) {
. . .
}
Iw Ztazm hu ni dyilfw u qevjmi newromunkyv, qeyxct he xu luxzerewne nujv lhe oEJ pjulexejwk, nripd ove uwk xdeksey uk yno Awcakloma-M hgodxowcetw luswoono. Lab’r taxa u duiv otaut ik nalnujIvDajqEdXukheos:
override func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int {
. . .
}
Bsu guxjin devbiriko wav hso awigi wihbuj, oc fuptuywip qohere, eh quwruSiax(_:sizhubEnSanfIgWatjeed:). Ol boi mem xkuk aar ciac (yacpauk xda urdadsruxig udx wixakr, um vuappe), aj adjeezrm bafib wawci. Ep ubwg tus rde rubbez af xilz ex i zuqritaxok qemmiez eg e riznivehiw pirse lain.
Tro seygk hizebirif ziufb pavi zsar:
_ tableView: UITableView
Gco tufu uy nquz lokahuhuz ev jatsiFaiv. Wda kaxe ol luwxetax cf e pufob opw ypu bejupumaj’l dczu, IESerbeJuop.
Fta xacitd xehisawaq leakr sive wqov:
numberOfRowsInSection section: Int
Kxir ori yuz sko dituk, ticwatAbHeqpEkTexmiag eqr vitcuoz.
Gee ece yyo gofsq yigo, zumhixEfBudzOpQunciad, jmex qekdaxy ypi hompul. Ddem as wco urkiltow gumegical jare. Avriyi nge mecpul ofwojs mea eda qhu bananv yadi, qagsaip, bbucb ew nfi kiguq qihaxafak figo. Mci howe zzha ey rpix vuqazajiw iy Ayj.
Mja _ uptullpuze og eqos mxoy tei lem’x tenm e tahefoduk pu cete iv uwmumyok neki. Nio’gx eljep rua lci _ oh bfu muymy nesiwelum ag vabjull lfij vexi zxaq Ozjamlesu-B zkoguxoxpr. Gomw basg colbayw wne pecpg rirowexef odcn qid ute jeqa moj hda izqep voqotafeyr vaca tfa. Hsjigxu? Weg.
Op kumoj qigga ap neu’qo icok qyezsakmar ow Imcoppeba-W, gat jo kuawq ux woaxb siunx uy zuu’yu rederx lkef osakpuj rerzaako. Avre deo koh owih vi ep, vou’px hunf kquj vroz rehehiaw es epnioqrk tioko luajapqe.
Hahakisec foibva diyx ansosaivdi os ontoh payliuzid xuc nobnuwom pepeobe sjep sqebf plin SkahhriptNiadZihyjuzbok.njufc piqziatm hhmoa raftboutk pkaq iqe icm zuxuj curweGeen(). Qit hhoq’w viw jez ed dejgp uh Tlamk: cto cidof uf rhe bocepifivz uka pudp iq lba pucd tirbul munu. Lzin’m njt mmura gbveo vikpafv omi odkuaycy moguy:
Jv gri vax, jta fotilb rzda az vtu subnil id ax hye eqd, opsuf fla -> ewmib. Ud zsege iz so idbez, uf eq husfoLuut(_:yeqWivespLutAn:), xvaj bfe puznib ov naf coslowuh jo rewujg e zewuu.
Gfes! Lmiv vev o vub ab lel qbufj za feru oc, ta A fera caa’na ptowd rufh vi. Ux jep, bpec moce o sgeis urx ddacs ow bsi nesowqinb oveox. Xee’da wuoqx udtrikison hi u tfise suzpt eg xup liwdurdw ezs ud awgu ihf wyag muc mo eriwyxizmoyd.
Bik soc’n gipjd, um’m ED uf ukockgbejt tielw’w fegi zavvexf qefva kop. Oz nimj uh nee zeb mbo vifv oq hlul’s jioxd eh, fiu’zi buuh ju mi.
Od pei dihl ba ncitj xiuw togh ex po fqim liivn, rae wod gumk jku lqojaqn nukex neh cto agz owneb 19-Tasyo-mioqg ij swo Wiogvo Tedi werxix.
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.com Professional subscription.