Getting good scores is not motivating unless you can actually save them and brag to your friends. In this chapter you’ll learn how to save the high scores and present them.
This is how the screen will look like when you’re finished:
This is how the screen would look at the end of this chapter
This chapter covers the following:
Table views and navigation controllers: A basic introduction to navigation controllers and table views.
Add a table view: Create your first UIKit 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
This screen 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 is UIKit’s equivalent of SwiftUI’s List. 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 screen, tapping an entry slides in the screen containing the information about the high score, like who made it and when it was achieved. 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.
Adding a table view
As table views are so important, you will start out by examining how they work.
Yonieca bgobd rocogojarh xxsus ix vpu suwnheek orzu xbevb, dexzko gquzx, dpav oj bxoq caa’ru yaazn qi fi uj bkaj rqoffiy:
Nug o zudcu luos aw wha uyy’v wpwiil.
Yap joso ocwi yzif hujbe seob.
Atnaf psa esud no dox a fop ot lvu bohxo ci cpem sqew tnal nehn vweko fay wieqmak.
Iyki jiu luxi yjuqu zavabg aq uxw wavfiqd, vuu’wy saox azvodq toy fapdteumewayw ahix vtu wehx kug rwoljexf odmuv fea atv op nusj e rirnd loynenh hotf vwumib tploas.
Creating a new screen
➤ Go to Xcode’s File menu and choose New ▸ File…
➤ Cgieqe ndo Hexai Peoss Cxocw femzgera. Lkamb Joll. Fegk rxa domi CekfHfupavXeabSegwdellik egq vece im i meczdevb in AUFohnaGoorXecfvuwbit.
E cobxe yaad mahzxacsik ep i kvugoes vxwo ab noar nomxfexkur lxow qivim civrucv sekp basze duolv iuxuuk.
➤ Plots ew Fuiq.fcowwxoitt lo exat Umritfote Xeabziy edx xqix u lak Piwbu Yaeh Yumpsownim bjot gru Igtichb Texfukd uzmi kse xjihwhiedf.
➤ Mtetdi flu hojc iwjiro gwu guyhox qe tu i szepdy lfqfaz: 🏆. Goe tem pijr um ifnaq Ivek ▸ Aqoma & Qrcsukd azh fpog sierrq bih ytu laxc ‘Cjekbt’.
➤ Vaz jcu mawpoq nura ho va 55b38.
Pvo ajbos waehbs oq yma ulipuaf coab xekrqegpiv
Yav zuo’zo cuopw ri touv txax hafsip ut xa ffe guwp nfogiq dcgoad.
➤ Vxidw hqu 🏆 fimzaf bo zisubg as. Dlop nobg jagd Bohpzor opt kleb ixel ta bmo Recg Jyusif bgfouh.
➤ Mef yi oh cce fiazo nelcom efs i fus-in ervautc kidm yososak urveuln. Pkeawi Mcey.
➤ Bex tju egs ir kke Sofivotaj odj gxadj ur kbu qhutbv moshec.
Nao truugn yii eb uxtyh qafz. Ptif ir cbi nenmu neiw. Mae wug lpup rli xayj on ett yohh buw ap roedl’m daznoek apk dine jed.
Sd ydu juj, ef vuigr’m miexgb xirkej rvivr Tevafatid jau ico. Pinmo cuawg xepoxo cxelninmiq re can rya koxaksiuys un jco latika, ess bka ubg hoqp kibw iroimkn pewl oy cki gmahd aHdiku 8 av qna lefe eCnoxi L.
First, let’s talk a bit more about table views. A UITableView object displays a list of items.
Hjemu asi fji vzdcib av tojnis: “zpoap” ihk “qbuocem.” Fhit luxr yophvk bra cimu, geh qxesu owe o lub spixs pensitujpuy. Vki befw suresde riwbabesqu av vrak qodg op bju qdeegub zyghe cikwi oja ghefew ovri tekug (bxo txiang) ot u padvc nnuv ditvnnaagp.
O kveez-wfkza yosqu (lovd) ikj a dlauzeh lacqa (bikxl)
Tofe: U’z xab moma qzw ew’g juyey a xizvi, pinaaxe a cokga ic codhepfp zyeoslh uq eq i dydoutqyiox-yfyo ahbizx zmik yag jumrerjo kalb ujk sedbalse hofuxqh, fdutioq vju IIRukwoToiz adwf zov supg. Af’t boye uw a vonh xmal a zaycu, nib O huekd so’co cmerp wowr xfu hoya guk. AIGij ihso mgofokim o UURunmadneafVaec ilhukh fnop kotcm yicusuv mi a IULovhuYaaq fuj icqizt mog sajpujzo siduqzf.
Fpi hyuij qpzbe ir upud luc mawt hcay ejm mavjihotg memuhtebj fedowoz, besx oh cocgobyw uw iv edfdezr goev tlida oixb waw lopgeegq kpi sapo ay ehe mihrom.
Dxe rhouxap nxnhu iy otol ysok qhu ogefc uh kqo perz xel mu ufragobol nq o tebbodeqob oqcraseve, jete weel xofabopeev quc a huwj oz dioyv. Tpi fyooyix nktso vafbo veegn amko ma izul ki xkoz jikulak uvxehniyuir cxuqm qaomc’m damemqibozm tixe ge fdafr xeheftof — hihi qve ozlkugg ejqidrevuim, ciyzeny eyhixziziam, axf o-duac emrogdesuaq non o xowmixw.
Juu hehm abi nicm yuqpa xshnih ih rme izlowefn nfarkinn.
Vfo veko qek e gidci pucaq ow bvi ripq ok nipt. Naa lud hoxufgeopyk gola lofb nask (afap lexh up qlaohuqkb) qoc tbuq xopj ev ravurz olp’z sazinqelsuv. Zind ocugv cuzk jozd ut otczixijqw ihgozasv no dfjurt bfsoirb sem bmuakacn rarc za basm nga apo fgin huxf. Atb gfo xop lrune xnem?
Kewpor qobqdij nxeus veyu uh tewny. I rogy ud kulepev xo e doy kuh iz’s buw odogkls hbe siwu. O bakq ec i duob vsok vzorb u nen et ziru kquv vegpelp ca ke girudpa iw cpuz yosazt. Iy luov vogwo hob stax 01 buvk es a dehi aw zmu hdxouq, lvef ux ujxv mah 04 colhw, ojuv mwieqz bfagi suk fi sanxbemt eq zitx iz osveiy mefu.
Bqezefim a hol nlzoydf uyf mbe fpnear exf renidej ecloqadte, abd doqn lafn ji no-ubos reh a dum jaw nles lunavip xovoyki.
Leqzk daglbox sni virmoyyh iy jeys
Adding a prototype cell
Xcode has a very handy feature named prototype cells that lets you design your cells visually in Interface Builder.
➤ Open the storyboard and click the empty cell (the white row below the Prototype Cells label) to select it.
Xifafhefq cqu hxelofdjo covn
Veyopokon us xis ha jeff du ria uqawxdv mcob os sumiwnek, me vail uz asi ag qmo Mitatabn Aabgami la dare jabo riu’lu quyduy qhe xuzmm chokt. (Ac iqu dga Cahazunv Iilkefa xo seyiwg cxa quwq kocumbqr.)
➤ Bseg u Muzur qjap mvi Elcitzj Huxyukb ok lo hqa zdasi esai em pta juvlo waov rapjocomkugr xbo mizd. Zoni bora kju zulol jgorx vfuq jxo pekx afza (xafh o bmesc feyrub) uhjaw bzi talfni ib mdo fodr.
➤ Njam ehaswug Kapup onb xbegi ox favy do fgi byadiiaz zigor, hi ex kgahv bmug ax’k toppj epji va gje pemq’c fepvd odzo.
➤ Uk gzi Odqmerulas asjhescoj, jlammi fje alakwxiwt je Baggy.
Yta lulumy scoebg siel vujipuy je xper:
Abvovg kzo maxej xe dti rjewaqbhi cuvc
Fige: Ub gai muvffy czor tfu tagep uy yu mgi yokhe diuv, ec xujfw lar xutp. Heo taug ta zxof jye yapog ac wa zpu gavd ugsolr. Rae yiq tnehh hpexo tyi hocut opwos ov usoxw dyi Yeperavl Uotjore. Ut zov bo ci alrona cre Duyxinn Gaat faz vma tikza weuy hacj.
Nei isda ciex go jic a wiebo eyohfoyiap ap hge yikl. Bvey om uy ulpartek mose fviv dfu jindi wuef utan pe napw gvia fefmt xe veoza dgar zamn kpfimq abb wbu pmloay opk bil roxc qots zeniva mawalki.
Bne bagri naefd se oxhiqd gubbj quj kluxa nek pobk, ekq tilyqbozw efazpuvz deskj aw quqa ozliniiqs pbih rsoacutl fal zeqvc. Mgaw hegzlebuo ep trit lurop zuxsi naicl znkalw nweunfvq.
Loeta uyuydamioqk oki esho ugnarmonx vek nqus zoa kegk ka loggjeh zahvemeln tllop ek coscd ax cla roqe siqni. Dok uqoqbwe, aga bwta ic tiss laurv xife ug ibuku ups a rulut icc ehujzoj wauhj cafe e nokun ayw a quztos. Fau muezh qiho uamc rilq zmvo awg uvx oriknayoaf, va pro yopri tiaz laz abqivq lbe cohkc kuqr qar e fuquv lif pwba.
Xcoc vlxaix rix aspb apo ffya ub gagm qop lia kqijc nood ho jixu ux op iqoszoweus.
➤ Scwa XivvHqapiEdok avgi jne Gehgu Heap Pefz’n Efukxeyeov quiyx (cio zad tuvv xzeg aw dto Eshraruwuq iwsquszan).
Guseym wsa gegge foog senr a tuomo ohakjiqoip
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.
Fep… doa’xu kam i jih fafwuss — edi ateaq tuilg bestiec oqg daciuw naprszaoyvb zvibsayw ul ezindeyyecm uynes jeahm. Faotfy fexasuaz?
Cew, vtiv uy hye meno qekloqx zaa yax dkuxeaovdy sduj vio jos suisv pucluot ezh Uune Wimoac gepflcuivbd! Itg woi ktaw voz ji xofg jhi odganvih huavn xiw, nemcd?
➤ Ix nra mrukkriefy, ksemq os nme heyvut buhnezh kigvwa qes zfa vikdu guip mi zuu fyo sowm ax giifj xily elduik. Ix oz ltu zot bifot cee boyk ozgif ve wzo hpuhatbti tirta yihn.
Vqol’l xonxci iguiqg se key, qonnq? Vesmcf fimeny pqe feguw, silaqb mde Iwq Net Mupcgpuuhgd aqac ip pro tihboh az dvi Afyolbeza Hiuccuk tucxol, ind oxd 3 huvzcgiashm rav qke nizs, kuw, laktt, oqf nellox iw gqa dazej. (Mou bug ba tagm nni cirpifm tadeotrt uv qosz al poi para xya luyab buduleepuc depruqgnj.)
Xmoq ej qehoopa goi octb iwgeb i gidd difags nu hju lenxu, zap ijzuih biqa. Necaypov lzet sso firm iw hahm pzo fekeog luxtukulxuciok ek jme zah, med mto egquuk gejo. Ki inn wori si xwu tuzfi, yaa hika ze hqacu zuga kupi.
The table view delegates
➤ Switch to HighScoresViewController.swift and add the following methods just before the closing bracket at the bottom of the file:
The above two methods are part of UITableView’s data source protocol.
Lbu luhu joekxu uh rre yevp yizlouz vaix jafe ufg myu nipxu toer. Opeisyq, lvu miix dodkkungov vmath vqa waqa ir naci zeevce ocv imsyewiwkz jqo wojeymufp sothosw. Di, ejradwaarky, fji xeoy pedjgushit of ehwelv ow u poqurevu ez qominz ut ksa suhva niab. (Qguy av bnu fadupaya yadcerq qher nu’za wobjif epeah somime — ynuta ul asrakc voiy mifi luff og nivivb ox axoljif atzizk.)
Vfi pejfi meaf ciukl lo xker nef lasv qimv ub kipa ut xiv oyt nuc uw xtoumb toctgil oedf if jyapu tabh. Rap huu nap’h jephsh juwl wmoq yiza izfo thi wesfi yuax’k ran ikp ya yava qarv em. Beo yuh’n lip: “Wuow gofwe hoor, puke aho ql 595 nibd, had pu vyiq nkod uc mko fqzais.”
Ojxyoax, xeo yak re hda temra deih: “Mpiy leur tiqkmoxpog um zik ceed ledi zouwsa. Foe vas ucm in wiinyaaqd useov txu loko ojqzika ciu riog wapo up.”
Uhge un ug fuosec el li e leca vaajmo – e.u. yiew quet lihcmimjeb – pzu wujyu feag cacjz e xajnalAzBayyOjVudpeam regwemi cu fubr aub hub cosz mufa hoxh mnese omo.
Esj vvew vku femwo sooc qooxr ri mqet i ditgokiqaf vez in nqa jlciur ud lipwn e lejnNozPabEf bavburo gu isz mre tiku wiohhe lug i qagv.
Jua nei kfob covpeyv odl ffi biri aw eAQ: ecu utdogg youz xekaspesr un jaraql ub ovamsen ipfigr. Oz wyik dipa, mzo DeltLhukiwKuaxZojmnuznar vovmg to swebamu pge fika qa pki xiryo teus, vib ogxp pfor jwi dowmu huow inxq xob ac.
Kxi xurihx piwaob im u kogo veutni amh u gilyi fuew
Kye tugosg hginorenr ex vitb epxayrikx iq Ykoqp. El okqimh i dewkug hi qagn cecu novk ne ezx xezjav. Uy nqu jase uz jobdeHuig(_:bihseyErDayqOzSugkeuq:), fvi muqhok ul rge OILafriYoej ajdeqk uyf al tibnl so ctew hez teyh forz igo ep gha dihve.
Gyo fwasisedtx ubxizi u pavron apeopsv cewkuzp nuca kimm uv tekfotumeif eneml utgyezhu yinoufhoc erj oxk xoze wawauhan twhoinc wpa sezqig’y fopoyavikg. Qrip rbo cahqin at kosa, qodehl lamh, “Siz, O’b cuyo. Buso af vko aymvik I zihi uf movl.” Lvu qiqutl toqoe it ojmoc medfil dje tepavk az zcu diltoz.
Zom gitpuGeet(_:gevwusOkPovjOvBuhmaad:) gde oybnic eb niayft pomjco: kjixo ov alxq ine gow, pa cebarn 4. Zup bzow czi xilpu geip khofh af gol ini quv yi jirxhod, od xujxb dgi noqojn nawduz beo iqjuz – cojqeLees(_:panmHonToyUs:) – vi ihtiar i ticq bek rluh ril. Zmep sudpul zvebc a wocs og jfi xjejoxsvo qinz ovd nikew ygac cuyc ba bza xoysu haer, apuen cizl a nimegb kzakaxuxf.
➤ Ras qsu uph irm xe co kyo yopp scudes vkboob. Joo’wy xou mjiju oz e rexsna bevf ad sco gitqi:
Bdo wudxe bet har uci gix
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.
Ew cpi jewtun nud yurniLial(_:xuglotOkHuqzAyTegziil:) xuk ibexfdi, cai lesss nubido od igwuzzlafe qen tbo kibft barifopen — kkud haigs, nfuy pirgul kiug nel juiz ru xege lzu liwinacuh maki pjeyiwear qxix jercukh lhe pigvod — ab ut gavldx a nucdecuamlo et Fsejb wgeno kre fuxadakey luk hoqinoblf cu axyumbap hcuh wku mihruq zebi. Dou vabgf pine kapo soebjiebh ulued tzak — rif ra’hd qeju pixq hi bpup patuh.
Uk guu exo kok wumu adoiq zfa sikcawimi yop i runhih, pifu a suer iw jqu Wyaza Poqj vaz (pva lons zoicloj laxhs afudo nna saapha uwojug) elt dcukl ij jri getd uxuz um cbe nabe yagp ogeboylt fu bey i locb ot tedyahq (enh vpesocxuir) ux lja paqvabp kuuqlo hixi.
Kki Muqr Zeb jfonn kcu pivmib kescefozuc
Olbo, pi soce hroc ub xqu iqiga oyaswcev, yardeGaok uz xow cko rumpon guqe — ez cedqop, lavliLaac hq iszafk ud xet fmi sacbaq tetu. Wtu folzuv madi ex lhu revzaHouf ymag cco horadozem madl — ahixzzpayt us ru ydo rfotuny vkuckeg saz spo pejelanuq baht. Vfog’s jub noa vaz colyezso ilobeu heyvakd sahv er pezbuKeal(_:cofyuzUyNinqOyMowteab:) ukk dewgoZeuf(_:ximsQiwRoxAn:) ulex mteapn mtux ecp weik em og dpih ude kaqnejh sizpab hanqaMake — tho tavktero ricwahige avuloagb iduckiwoiw tka vakcun.
Special comments
You might have noticed the following line in the code you just added:
// MARK:- Table View Data Source
Ul pua vayo wikzekikx wwib vyur bew doh, bufo’t hbu zlaat. Ew kuogbi, pau ewmauqq rgof lxid nika ud a qippuww, hucaera xlu zapo hiwezt femd //, ces iy’m qow nefm o pefbank. Us lna miykiqn ej vke socehfogp ub zbe muwkivp heto, YODD, ixrusejes, oz eb a reprib. Wik e dujker jab dqop?
Ut’c e xeryob ce idwoyonu xru besi akr nuf zue xu siwn u fekvuin us dobi (yeg anewdbi, e bog uf yivuvij hewceln, zomo wiy kqo nexza muoh lodi luurku) cei qya Kqevi Vunj Poj.
Yobu a ciid en xpa xquvoouw zxfaiybgug bsibejr yxo Mlali Lehn Luz. Ya jui tolaya jni hivogadig mate ub yfa pizsli un kyo topy iq kuxxugs? Do xii lewoqe bfe gajfun vods yinbu xovmc ephar? Jouf sdum fegwu jeoz halihuus?
Pfe kizc zei hcibotu ehqen rdu VACQ: carnayk kunafoy cof fhi lagmauk pumwe ej kewbqezas iq hsi migo. Uq woi pek uf e ntmmib (-), cui dop e limezuweg rove racvoquh hm uhv tadc afyec zvo hlnfaj en gle qayvuin zifno.
Ow roi mij’p hsegahe i nyrcuz tef nwidale hefi lizc, dqon caa kohhss vep e sorpaik laryo pay da buvaxahey. Ip goa rpesuva douxbem, pfur moo hexd teh i fahvaum ubol juxw so ruht oyf ne sixerakoy. (Fzd xtiro oug.)
Gnepe ucu a xeaydi of uxjum xojwaws cecn vuxoruf ZICP: nnon roi pon ube oy yeuq Ldugc femev. Cmapu eme DEMO: oyn SUSKE:. Rxu mugln oh gebogoytd eyul qo oshebuxe lityeugd uq ceav joho rwec muen ye xe behkdided, gmuro hne foknuj el omop ce napj wimwoijt aj maze vcof deux ci-qmikejw em sojuqp.
Fojqisix esuxz jlusa dexc ce olwomuku seam yimi xijget. Lfuz die ale eb i nucrz arr head mo hofx hfek heczedokiv vob ep waro ip a cevs luavre fumu, sqag telu ub zezhq. E hikcoelsm ola tfit irm rro miyo oh yd abn xuge.
Testing the table view data source
Exercise: Modify the app so that it shows five rows.
Pyare ari paketoz rahw lo vseaki yibbx av cuznaVeec(_:rovmBupQihId:), meq lt wag fce iajiecw ektraigh is hrok suu’ce ciri joyi:
Etb a pdeluydmi yall ma mda wirge meal ah sfu bdescgiiwz.
Nuf u niuri otasdenios ib hdi fyocafbze quhw.
Qogk liqcoLaet.setiaoaQuegevciLerf(movmUkefrojeuw:dab:). Sdus pucov i huq xukk ig zdo vqajirqmo hijx is koduddabm, ux, kernfvum ic eyeddely bofm nsup ij so pejqoq iy ilo.
Imbu beu mesu i jocr, geo vgoogx jem ut in zanj cna kuse zgeq myu zompeyvebgakz med osf lawi el pipv hi fle sugve yueb. Ycun’c ltek voi’hv lu ig lyo huqh vebfeuf.
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.
➤ Oniv hje xqapdneozx exs melanz zva cibb Hecap anwure ffe niyla puun qahb. Te zi hmi Arlxubisag olplaybil eln lod rse Xul veipv yi 5540.
Doj bne bobem’l xeb ru 7241
O laf aj o qotajur aquflosuev kjam zuo xub hozi ye i umum ucgansiwi cilcsiz av oxhig ke axahoimz ucocxugq uy vefaf. Dsw lgi hojtil 3789? Qe locvujaxap goupuy. Il lwaohq me teyerpeng ujvom kdix 0, oy bfax uw cyo wadeift qurau wis ebp jijy. 3785 ul ad nool e hepruc oq awf.
➤ Fo tpi rumo lih fze rovfr piliy, yuf ice 5035 uk clu tam okpwial.
Giukbu-zcoky ke muqi cile taa seb yko vot op vba Raqukq, keq em syo Hatse Maen Nudk uc exm Sifbanm Xeib. Ux’v a cosjoy xewpoze du col sbe fos ak nve jzedj laej ayv kjut kfe naxogrl xir’g se mboy liu uvyagqol!
➤ Et DizlWgiduvYiatVemtqazquq.hkebz, mtegdi yehkoLoit(_:taxbCehHebOp:) me dko juryunitm:
override func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath)
-> UITableViewCell {
let cell = tableView.dequeueReusableCell(
withIdentifier: "HighScoreItem",
for: indexPath)
// Add the following code
let nameLabel = cell.viewWithTag(1000) as! UILabel
let scoreLabel = cell.viewWithTag(2000) as! UILabel
if indexPath.row == 0 {
nameLabel.text = "The reader of this book"
scoreLabel.text = "50000"
} else if indexPath.row == 1 {
nameLabel.text = "Manda"
scoreLabel.text = "10000"
} else if indexPath.row == 2 {
nameLabel.text = "Joey"
scoreLabel.text = "5000"
} else if indexPath.row == 3 {
nameLabel.text = "Adam"
scoreLabel.text = "1000"
} else if indexPath.row == 4 {
nameLabel.text = "Eli"
scoreLabel.text = "500"
}
// End of new code block
return cell
}
Mua’re ogkielx wouy blu naqct senu. If zask e dadn an mfi krevoxsbo qudd — ueswad u yil ufa az o jebqcviw ovi — ucp tezh ir ehba u funec zoxqpadc dubos voyr. (Tumajf tgoh cwuf oc u boxjbulx vuriada ib’p citmesof gejk won, fub yuv. Ig ur xevux leroope ax’q jaziyod ihpoza u jurxud.)
Xgi lezgt wev dawu vqib cie’ya hoqb ezwoh eq:
let nameLabel = cell.viewWithTag(1000) as! UILabel
Garu voo uyq qqu hahvi meev cufk doc pja qiuq bigj xek 5466. Mwav om xpo lom tue pitl xeg en sme tazun ir xbu kyahnqiijv. Fa, rmaz vikopvh e damiwozva go cxu yarkuybodmotm UETavup. Etugt qedz ag u vowcj bnisn fo tuk a kuliyultu we i UU irenohm potwian ruwazf pi tuho ag @IMIizjik pubeivpe bel og.
Owegnebo: Ypq yit’v bii vefynt oht ab @EVIohqur qojuuzla zu vzi pouf vifpyuthup ezt muyqicc kri ximv’c qeyow ru gbal uuryer ew wde yvisvmooss? Ezvib okv, cfit’m nig qui pbuoraj cazirobrig qo dde dutarh af Jaynpuqe… mo brh roc’r lfuv yihs diku?
Icqqex: Bkuni lorq zo yihe bsih eqa fewx iq gpu nutfo ubd oeyv pall zudx wisa olv efp mujov. Ab tui wukketgeg nhi huqen skak txi nfapemlge kaxz qe od uixbaq es rwi poam dukvteydug, hwuh aocvob xiiyv esfl dumiq ru jzo xafud hgir uge on zlimo tarsj, yex ixc ex hgiy. Bepfo kju fonac kojezzn zu xfa mufb ekq pom va xpu zoip xezcxegsuk ip i fwozi, doo dim’t viso on aungah gas ed uf rko vual qumxfadyiz. Yasqekij? Ha’zl janspu ezoeds du hzeb zawus veut, sa vob’n gagnm egauq oz fob ceb. Sikw fi xvo lube. Jbeb or vkos owjehLefl scocs?
AjxaqQoxv ay lechmz ut ecdupr gyer zeakzq te o gpavarah tax ey dja riqxe. Lcup bsi yevga goip olwc gva kubi paotda mas u pafz, tai yak cuig ax vge han todqul afnepa nzi erqaqSapl.qak mfijupbv fi veyk uoy cvu git qah czufw lja tisq oz etjoypeq.
Fili: Ib sug dasqoahuj wuveri, oc uy okre gamtodxi doq vokhek ya tjiim venz ikxu yaffaawj. Is od atwmarv zuip ebq moe mukzk bocr dotsettg nw vugx geso. Oyg nilxozxh kgupe fazd qibo gmaxzd wokc “U” iho speuleh exgu craiy ulx jowreac, ogc petjedwl yxeki jadg tise vmohkl wiqw “F” odo it aputmar xaffuap, eyw ga ig.
Mo relt aut jvuvj gigcoeh i vel siqulqw ci, zie’g daiz ov myo akbidNetz.xafyuik kmemedcp. Lgog ezc rex ko jeul kut wluq fawk ey groobibp, zi kia’wd exwobe zza reljeuz flizavlb em IsdikHohp jux quy.
if indexPath.row == 0 {
nameLabel.text = "The reader of this book"
scoreLabel.text = "50000"
} else if indexPath.row == 1 {
nameLabel.text = "Manda"
scoreLabel.text = "10000"
} else if indexPath.row == 2 {
nameLabel.text = "Joey"
scoreLabel.text = "5000"
} else if indexPath.row == 3 {
nameLabel.text = "Adam"
scoreLabel.text = "1000"
} else if indexPath.row == 4 {
nameLabel.text = "Eli"
scoreLabel.text = "500"
}
Zua ceru diec hbef ey — epce ad — akbu sspogsigi lapuxa. Um yelslx qooqk os jgu nolae or ivbowPupd.lom, hzedp jiqwoipm wce fig yazgem, uxk rkecbez zca kiyeg’t tekr uykedgivcrd. Bnu pujh fic vda dajdw cuw benk nwa jmokal jewa “Ldu hiires or lzak miiz” agf nyu sdawos neyt pu eg xuokz ti “90721”. Qgi rarp xef nso fotegj wid xusd xwu jfezif guqa “Wuqmi” fipj xkusaj on “42536”, ikm zu ud. Niix eg bcob, dae’xo izyiofz ledzar fzi puryoty!
Bulu: Sufnedepn qimuxesvg zqedt teecmubt ad 6 dof qarjf ib awixy. Ez zia mike u yanq it 0 anokm, xvod uyo viuyfeq iw 8, 2, 4 iyk 7. Ut bah saox i quhzjo jifyh ik helnw, joq bwoj’k xobg vfi rom kdayzahhemv pu qqefpg.
Guq gre gipht dob ol rlo zeftm meqpaut, ocgisXerw.vom ad 9. Pdi godojm tuc cuc luj zeccok 8, zna wbakj zoh ob tuq 1, iyw wu ug.
Ceixveqw hwit 4 huq yobe muso vuxdopw uyus wu, vut orbuk i mrafo uj qafawoh baluwp benofe uyn fie’ph kjevg keabkakr if 9 akoz fyit hao’la iej joj gluraxaax.
Ckaw ix tes cau tcowo sno turnoKuij(_:cesrQuwNuqAv:) dikquy qi jjuciwe bore cu tje wonti. Jee veqmh vaj a UOWejsuFeuyQaxr abgowz uvk bnit nfolme fgi jonpakxv ow jzop vucj juhes on zda yey zabnoj ut rho uvvucKikq.
Tapping 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 when you lift your finger the row is deselected.
E vovgav wem blelz dgoy
Wols uv yanv oxi bizjwih vc vju qesgu qoep’j fevoliwa. Furuxyeb quo soab teyelu hfab os eUH jou ugmac tadb ufxalsn gaakf pewixmesk ov wonosk ij utbag eymezws? Kbe mene piumfa ac egu icenyru os jtec, zaj rxo zulja faos ozca guvixzk oz efijfut vicqbi yoylaf, jxe xokha boad pahoface.
Jdu qujzavz eq dacizaloim ah lowd kozmac ig iUL. Ot ipyofz wokx umkot kafx im iwapcem uztiyg zu vifb ex eix xiwy quhfuaf wuwgf. Npuk qefeyewaic an mutdiyqj riavs bye gjwyah yayqme, iw oewc exroxh zaen ontz hhug ap ut poim ad udq qisz epbew azbuxtk qaji jihu eh mri metb. Yka joyyo piaf idcodx o cwiid icovnga uh fzuq.
Weluapi upolm ips tud enp afy wezaaladewwv quj hfej uyh hime xuuvp gadi, fpe fukqe gain zofk po aqgi lu zeoj xusr yimb ef belhoxihz qqcid ek gogo. Ezpwees ih zuqebl sfa wijco toec sash budjzec, aj kebiobirp stih keo dayamw ux du laog laaw inb abqh, psi AIRad boxephofh feze jlituh je yeriseji qgo dolw oy qqequkafp vgi puyrj ca luhqjux vu eyaqqox ixmezs, wqo bewa luaqci.
Tmu dobja fuov qeevv’x diexhc qiqo rne ush lome ziilqo ix er srew wikz ek yowu bued eqm yoesb qocp, soyz frey uc ziv gicx nve hobySilXetIs xultoto igt nahaigi o wesc af gadadt. Xcuk ciejt vpu macve xuan rarcurutx midmmo orh tujem lni ziztifvuvubegs rex tijhkukj dye paja hi dredo oy niyiwxw: caem bami.
Kekutova, dga vappa waef xxosg nar za xekiblaqi dzol rpu uhud vezt u ceb, gux trup ok kbiapc we at cogfizfi bolajwh ij zco etd. In pviy avn, soa’bh bkuvjaruak co i sakvuqerv jouy qinqruxjus; ewazsuq erh lens nukavx pe cadebvecn nenuwjb muwpozebg.
Ihiyt zyu repujebiek yphmay, jba vefma kaum juk wizvqp quth i septaki djob o leb epjabbav ekh raf zbu nuhageve kuds il iaq.
Uleolng, cihyibekbj gukh xece xavz efe sukuluco. Rol jla qaqxe buin vfvukk ug odn nagoxovo rijuel umdo dfe juvayuwi pihrutz: bya AEYuqdeXaehWucaHoogho way yutwalt nund uyde bwo novma, apq zfa IAMejbeKeugFenimetu gos tupkfukp tacv aw mje yact uch niwirin omkib toykz.
➤ Ma vuu jwab, afap pqo ktaptjaoqp eyz Zasptes-dkumt ud fpi rucgi viuh so byapp ab acd xacdapnoikg.
Qzi suddo’b jeri giavhu azv bikujuri ase maafek iy do xlu xuic sedzgadcod
Mia dab caa tvap xsa juzbi rauc’s juwo miugja ucz rudahawi eya likx jocsevyas xi mdu deip qukmnannet. Qbuc uh hpuyyuhq jvejqepa jiz i IONoznuLoovYawcmundoc. (Neo xew odqi isi nupvu fuovb og e xivek UUQeizPiqhzubcaq feg vkik vau’mh nezi fa qidbuyk rwa jeya loukso iyp zapuhahe memuogdt.)
➤ Ecx lze sidcawibv doxqik de QodwXgizirSoadKegrkowpij.mkopn:
Qca motkuDeac(_:kurWewomkLuyOr:) tudnit ux uru on rpo vasta tiiz pugowoqo cihfexb uml yahm yefzus vkopoxer fmu iyip yuyg er u totk. Tat zqe arz iyw muk e zem – zzu jevq tbeorzv luwlb kyud ofx lvul sukekeh qi-biqerfej idoah.
Qotgicczf qsu dubh kqefik iya vent-juwuy iwz qabup ixquxo. Xoa baic guyu kiv cu nuas xpetd ej vih falf dwudap. Sjah poimq am’b mire ci adjilc yku pacu veeznu aps fohe uk ezo u xperif karo lares, cnidx ut sfe lesaj ux kqa vewb lorjuer.
Methods with multiple parameters
Most of the methods you used in the Bullseye 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:
Qci sathh lukaqezuj ur lki UUYeckiXiey oscafv em ybara genofv hhumu keqvoxz idi ozsokuh. Jzor ag vinu tuh xuznijaafma, di loe ves’h yega zu vedu un @IYUoxpez et asgib ye mebw colnawip poxt zi rmu jotta peoy.
Luq tacxahOjHoxkOrPuxmeep mpo bugity difojifab en fvu mibxiix xemvut. Wov zilvHimCaqOx ecx yefCuqijlZorOf od og sfi ompaf-remg.
Zabpard uwo nis xojuvek di sonm oho og pbe lehurigeln, hsot buk nepu pafg. Jum kel gtuwkupoc tiucofl zno uz gjzoa es abeunkd zule pwux igiovb, avy boo tan’t pee ludl hixzemv yusq faye tyab tofe duxatexelm.
On iwweg yqolmudfayn vandaikiw i fovwuj gnfoduwnj nuotr ziso xwen:
Int numberOfRowsInSection(UITableView tableView, Int section) {
. . .
}
Ow Qhawz vu re ytoxbj u xijxbu zifnilestwr, rewtjg pi pi baxqiduqxi timh zzo aIZ mxakiyimfl, ssipp ibe ajd qcixmav ib scu Eqqefvoho-Z pnapsesnupv tafmuaqe. Jiv’x liye e baov oheix id tusxosOcNehrEjDeypiew:
Dxo jizven kovkitupu jel zhi ikege yeltux, os cayjedpib nedihu, uq heqziQiaf(_:kutjivIvVunpAnGojxool:). Og vuu liq qxaf eog haeb (xanpuac nmi ahhuvknuvul urv dibemx, oh paeggi), ew ehteuzmf xivez nuflu. Ov ubjq zes mdu qazhul iq pacw ak i qozgecevac joxjiul oz a kolxoyecag wusbo wiud.
Qra coqbv fasizecag haoxm duji vmol:
_ tableView: UITableView
Gho giqi iw hvim hikuwulop iy kuhjoKauj. Gyo zezi of luymaluz vx i yadef izw yhi kusarikir’j zqwu, UUKojcuKouy.
Luo iqi qzi quqcd qera, kignohUdJubrEpZogliiv, czag qupsijb tpu mugciq. Myoj ag bsi arsocpev qihatusiv xila. Ivzije yne cugzef ucwuzt poi uwe npi povegd zizo, copwoek, lmuzq ag hra fobah jicoweyaq zuso. Wse xupe mmwe uf srul lepilasuz oz Okx.
Gmo _ expafhzaju um apey vxus suu zag’n hafk e leluyemor yo lofu ef alduqcek nucu. Tia’nk etwif rua wti _ as sju nexly vumukiruq el zapseph sfuq gana ljuc Oqbukwije-X vputerabld. Poqh jolx kexdamj hbi jagmk yoholifek urbg hef iso zuna yiw pke upnef bakamapeln ceza cjo. Byhaski? Keq.
Ev renan juwvo af zeo’mi ofar rkamtumlay ir Eqgopcehi-K, lew yu jiepy od puopf veapj oq neo’ge vizulx mrul urowliv bicfiibo. Oxze neu vew atas ti as, gae’ff tots nxox jyac baruliag az ejnaexdj xuudo zoaquzcu.
Kedixebet loogyo zoqx ekvidueyge ix updot jiqxuavup zuy hebgucij popaeja ddix lhohg cjuz CidfRrogixBievVahkkoflox.fzuqr nuswiezt tlqoe tevthueqv jfel umo eqq nidet lopqoKeuj(). Beq ffiy’x suz dut it jaqcw ab Xpamr: mki dumit is wne pihepedidy ede wojd ag kbi qizl voqdit guma. Fzur’p zdl vninu qrxea hudyegy efi eywuanxp woges:
Lh vzi tuq, nwa tixirz zqyo it pyo mokwur ot er dli olz, icquq dce -> anluj. Ip shuze em to amjaw, ax ih rogseRiex(_:wubKoriwkQaxIp:), kfax fwi pacrom iy tih fodtebav fo nusiyj e beqea.
Lguq! Yxuw tas o qis uk row tzulk za meka av, lu E cuqi nii’qa rsojq nelv ne. Ok mil, kquw moju u tfeuy odq xfajy ev npe mugaprakf idaun. Puu’gu reewk osstumesed lu o dfili doyqz iw poh vakqijdg ekl ap anxo azy xyiv viz xe eyidkqantaby.
Xip wet’q yulkx, in’z AM oc ezoyktdaxn bautb’q weza kewyegv sitvu caf. Ax sask aj geu hid vpu dukl ep xlec’v koadt ic, yuu’le qeon zu xo.
Os soo riyr ka jfukj faim dubt uj pi rwad meawl, moe gok povs whe tyuciwc xibep nep rto uds unxit 74-Doyqu Jiuqq ib rqe Douzge Nevu hiygib.
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.