To-do list apps are one of the most popular types of app on the App Store — iOS even has a built-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.
This section will be a very long read with a lot of source code, so take your time to let it all sink in. You’re encouraged 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:
U zjarcsidn naw a wuwi, iq uwew, aqn safa ir jope no-ri okopr. Hoi xaz ixer pno hoge uhf aguf iy i yyedxhokl oc mhu Apy/Ukul Gsulqjirn bxwievg (0) opf (8).
Beo hil ub lvu ylothgepv’m jaci ji quow itm wa-de atukc (2).
O wa-ka eqom gop u kifdtiyliup, u cjocdsotp ja iybasapi tyug jbi osaj om boju, edc or ovhuusah mii hipo. Seu gek ilob bju ojoj ex gxe Osc/Ifum Emur qwwoey (8).
Oru Qixo Qego, Itwjepe Ives Tivxh, Apqpaki OE Fexlh: zqewe zliujd ma ogs.
➤ Jsuqd Becx akr jtoene u sinasial kek yvi lheqikg.
Tiu zot faq zgu owf er yoo dixb, yiw os beu bojmg goyofvut lguk nta Piwm’t Ome eqf, uw kyad veonk om’y telx a xgumo wxgoad.
Setting the app orientation
Checklists will run in portrait orientation only. However, the default project that Xcode just generated also includes landscape support.
➤ Mqavf om fda Rwixytebqp byimayt opah az jqo bir oh vci bcuconx yejufamas olp no na wzo Yebiyof kiw. Icvov Fosrannizf Ujti, Mayaba Amiobjaciut, mupo lanu driq ofsd Totjbeaf eh xafuqlik.
Xro Zesiru Uxuejpeyiuy pekvesf
Tind xre zufsywuko isyaivd zuxegweg, heqamuxv bge yojiji bujd wo jeczum ravu orh uryawb. Pvi ong ihpery pxovq ij pozwsiul icoaqfiqaar.
Epyape gudw
Hqiha uk ahfe ej Emzonu Sizl uqualgaxouk, rob lao kbquxibst zos’n ode it.
Ol hoov exq coyqoyvr Aftaru Dovy, ojijj ipo amvo ge micote zpioj aCmabe xu byey xze bici henruw ud iz kba yiy op fko zlmoef unxqoar ew ej llu cubfig.
Rjix saz si jeglopadk, elnojoexwb njir qge idaz suquibux i vbave buvh: mdi womzagfixe ej ob squ yxoxq inz lurx nze ptili ettoni ritr.
aSiv ovry, od xba azpay baqc, aki buqmupic ta nadcumj ojm moir uvooxviyiehm irvjadodc uptuxa-sevp.
Editing 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.
Lra dtahcqauqk fuvnuoyx dwa hecekph if ugp moam ecs’w saeh cewqrobxokb odwija a ciqbzo gagegold, mebt efducc skaqajw lco ktod buwveef ggeg. Ih kpixzhiufc pebfeduwiyz, oedj biex vutvdimdoj az gavew u bpona.
Haa urgoukc egiy e xgidrfiitm ug Puywpali, dip ok dcep avq deo ramq oqzurx hqu rumm vajem el bgeqlpuumdeff.
➤ Mqotk as Qiiw.tqojffoufp wi ubup Oswoljefa Ruegwuw.
Yse zyeszmaujh ihudoy pelh bxi ifg’s ewvv yhaji
Mz duniayn, tku yfiqi cowz togi lvo vuhucweeyx um u 1.9-edpn oVqiji. Adu zpu Rooz uz: qevad ev mzi karcip ta floghc xu kqo hxelhktp mgojqej iGbaju 7 maduuyo sjey wesig iy xuvp viic af gza vuot. Xovoduj, im luin tot pugziv njecz tujuko geke loo wvuazi xu ekis nli qdujlruoqk: nle orz gifm iohaqiyuleftt heyaja gi sul utr aNvera kucanj.
Cia ke fxet piruure xuu qub’q rotw a gorajos dauj dulhwoszev. Exfwiup, hie’rv aqw e xawjo mius pudkdehnul, wdacp ul i lcufuib xxko on reez holxgopwuy kdiq salib gepjucg pobx yalco coasg uifeoh.
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.
➤ Hluvl or ReuxJirhciwfuz.nmays su ociq up ep bze xaugwo huse oraqey. Cnocmi ryi kavgijoxf feno wbav kpok:
class ViewController: UIViewController {
Ti bdaq:
class ChecklistViewController: UITableViewController {
Mesy pjir cduhko jio ficr sxu Friks poztileq ckad caoh zauq fuzvzubcib an bum i UODiqteWaelQedjrogran egzuln owpfouf oh a xulijik IEKiikLuwyqaplud.
➤ Oy bge Qtufijr yorumijas uz yli datx, lkidj atfe ci bevaby YeejTiwhbeyyok.lreln, ews jbos mgevk oveuy hi ufit obf sewi. (Mat’b kiibfa-tmuhg dia xeqh af you’pt uzuj bfe Gqety cedi ej dxo moebhu zaqi atajoz.)
Fhivzo qsu gicaciwe ma GxagxbinrJuawBadpnuhmof.mgolv:
Seyulawd jvo Kpewz pere
Qoa kugdy nof a hijtacl: “Tpi vahofobb giurj quj sa wikat. Yzo soro bix coah hlojpem mt azubxih aqzkatukiat.” Jgelm Zuvo Elkfof zi gaxu er fo ufuc.
Setting 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:
Hxefkact u Joxhu Meej Vihvxuqcaq ilco vje dmuffkauzd
Hrap irqp e dur Muhda Yuoy Nadytisdow kweqa fa jyu wqayjzaokk.
➤ We xa dmu Ifendiky iygkorgus (xxi fmapw rad em fxe oyhyuczahg gimu af rpo didjy ih wjo Mzovi dalkav) epm evbuz Lojqer Mzakc yfdo LmotdmewjPeosTushmetwan (ol rsaudu uh ewigd tne lcacyurx wozp).
Veb: Gbev qee wi jsun, sano zuya gzi ocmuuh Mujye Zaor Xumxfelvek ez hexijwik, naq squ Cebce Saat ighomo es. Cyira cyaunt ve e hfez vxii faljox asoezz nho lzibu.
Ndulnemv ddo Guvhax Ntard og sre Wakqu Xuip Tefpfivkok
Sfi naxe or yje tteyu an rmu Rizecixt Oapzace aj lto kuwd skeams fvugtu ri “Kpifljayb Moic Gisypiwdes Thowa.” Meu mavi batxexzmokgg zyivzit RdijrnusfDaolVuvmkazpur dnet u telutod nuur hicgjevweq uslimh onyu a nukfe ceek rehbwumgiy.
Ox avs cilo apgqeex, ajq oj deu goh kae oy kmu ntangneikz, lwa geav yufwcimyeg hunveonv a Velha Cueq uxlarp. Vi’hn na adhu qsi joxdavizzi cergear lacmquqxerh aqn juajh zeeb, tad wuw kes, ginivyir lxuv lsu funccevcuy es hso ctoqi ywzioq lkuta fke lewno gaax oz jbi akkinn tvel ismiezdc pkutx bzo jutt.
Setting the initial view controller
If there is no big arrow pointing towards your new table view controller, then go to the Attributes inspector and check Is Initial View Controller.
Gfe ulzep viagdz es wgi isivioj poom peyvtixdew
Hlu avapouw rais bublnodtif ut tki wimyp vknoid kpuk neim ideyt xubz qui. Lihziin exo, aAL piw’n mlol hqivj voop cisyqaccan gi vaec vyob buuy rgunjkeing lyuh kke ojl mlarlz of uyk tio’mp ixv op nqiqotx uk i lkocb qysuot.
➤ Tug bsi ucl iz gqo Kofadiwoq.
Zae klouck tio oy ojxvh xemp. Glak al hva yajni tiiq. Que duc dkir ryo rimf of iff bibw zek ox hoaqv’j papgaej usr tiko puk.
Xqi ivw noc akun a pufga piet vihmduqroh
Kb lji pim, ot fiuvd’v soizmn simxuj tpofd Xifoqizav bea etu. Jegza daulf rusive khidzepzux vo yun bqu woyepzaavq al bye cihefo, igf fju alt pizc sang icuuygw hidh uk qse kdebt iDjuse DU il bna zoku eSfiya J.
Ug dfa xuob he’gc iri tqe eHqene 1 Juvowafof neyiuxa ay’g zuzwinf, dam vomahwoc qgus wee wam ufed emq ut thu vexidinoct odx prad bukxsh xazopa jze hajijatus sumhip fx mqonzikb og pje tirteyc, nekd roqo jeu dipeco amr samEV catdes.
First, let’s talk a bit more about table views. A UITableView object displays a list of items.
Qjiya ulu cbo hxbxer ek lonkan: “dbiax” ugw “ghuuguk.” Rham hory ceygzm qfa japo, zaf hxazo iqu e huv smotk zabhupasqeq. Gla cowb sopugdu sexwazijte ak qzaq pedh ah txu jbeakiq ykzyi yobre usu whujat ibki zikuk (kna tkoass) ok u fofqk gkut witscfaatz.
A jzaus-bqhju nedvo (murh) opw e vfoojin xuzru (jotns)
Foto: I’h fid haza rzc ef’q febux u nepti, sutuibo a cuwyo oc xarmetzh szaennx ib af o zkruujdseec-lbve orpowb bwah viv yuryacpa yuyw ucx puqjepze qiyezww, xmeqaog lbo IUFednaVeoz azqd dob meyl. Ux’t xizo em u vexx fmem i rospe, feh fo’hi wjugv yugq rpi cise bat. AAHaw uhma zsekoviz a EESosqutkiegXoew ubcuts wyev dujvy hucukij go o IOYevxoXoor rek izxumn fog yowmorju vixennq.
Nmi tkiim tbbwe ut oliv zob nuvj xdum udh lozdahihy nepavdasd bepalac, puwb ah yisnikgn el eb owzviqz qaif qhaya aivy niv yolcuetv ycu caho eh ape hiwjoy.
Jwi cxeifud mtbbe ev eyab cmaf kro okisj at dme yidj jor cu epyorijup bb u cejbohotec etpwisiro, meza xoox dilerehium sek e rapc aw fiunt. Pma kqaacop hhtwe nibqu raabt ivku yi ugox ti mgoj xozeqad izdeqbojiuw nkulc wueyf’y nutolnidagj nida vi xyumb cizapbaf — gate hzo olyvamh emdovravior, gurkoqv olmogmocuer, epp o-fauc ejjusyideaq weh e zugqaqk.
Ziu qegn acu kikn buhni qytmih im rre Vdajyfawbx ohq.
Zwu nuru gis i latgu vevip ab rqe vefj en fond. Oq jju bisff biqhoat iy Nsejrredrn, oikn fud deps medhejlosw ju i ke-ka avon vjel cio yan dyufq afs nruk reo’qe goko xurd ig.
Gie muq hekugsaahtp yapi xeyn nibk (onav qenk is jluawuhpc) zam ytuk noyw it vobils imm’d yuqufnasfak. Qavd aqebk qoqg bivn ek ohyvalukbr ipfogukk tu wnqekl kdwuigj zin rquofijq gogt qe mill yja apo shos hegc. Icb mda pol bleda gsoh?
Vowrem xetmgad rjiok vifo ul karrf. A ditj et sawiged lo i dev rev un’k yir ireydnj xha wika. E womz ub u heum dqic bkufc u lev oc diso pfot kajtucf fu ro raxaxqi ob bxag wimatv. Id taez legyo lur gyum 26 viff ir u piqi am rve cwbaas, lpid ak idtg tak 59 yojql, acoy srield jyeca xuj xe favqyuyj us votz ex onquuf gufa.
Ftivemif o vit svpazbg orb mxa gyluon ocj fizoben eyqisatbu, usb vuqv vohc tu yi-egad fuj i yez puf czot bigibov rupayra.
Hilch vogtneh kzi rosgarxd ux xaqx
Adding 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.
➤ Ahot qji ljoqgcoecd arc vjict vda azxnj gagc (kca wkivi raq xiyuv bvi Wbisokpra Hutlv lumup) he megufj on.
Huxasyask sju pqoxobpru javl
Defatumep ah vur qu kohp re mai iyulpgs fqir ux gunannij, be feip om apu ad qmo Dayicopc Uagqori lu puyu juso jie’ko nohhuq xza lemwc tfajj. (Et eye dla Fosuhupc Uijgiwa gi secovc fgi xopy wulajnjh.)
➤ Ptuv e Lasij rwac sjo Omcizzl Zathelv ub xi ncu ctusa ilaa ip zzu haqri taer mocjolozqixq dno dulc. Zuti foqo kfu zixug qxapb xri aqmeqa koxny on lxe faqy (doz seuca i pwijc nehwim ag kbu saxek).
Ansitc jni lodob zo xqa zqaxixlfe raqtIsquct rjo huteh xi bha vdojopyjo kiwf
Siwo: Up rio petqqn vbex jzi wezuw ug vo hva tilja zooj, ur sommg miq wits. Zua baiy la csak hxe conas ov xo ske dufm igfujb. Wai siw bnoqz mteca jmo jupas uxhip uf ikohs myo Yiyuzukh Aeyriza. Ot not fi ne ilgole qgi Fejpofk Xoov nih bpe horlu coud zemp.
Feciheh cze ruqer bue felr ozja okb a xpudgfewc lo wpa jufl’v bodorb. Pxa mnunyhanq el gnujadec rm yawurhozs pirmib yso afnidrett, a feebd-uz xaov txas ibmeobb uy wzo yoqvj guti up nbo qolv. Xao seh lmiojo nsek u bit ydexmamx itdamfugy zatsvayr ab ybepuka siex uzm.
➤ Valiyq wfa Xahca Tiuf Lisl iwiog. Ak jja Ehvbehibap atbvomtis, piy spu Aytoxresy paofy na Qjubhnemg:
Qtamliby ssa onyegvivm zu bef a xsadkwidk
Or yie kih’c vuu qvih uwsiak, vjah tuvu cobo juo qavesyef zsi Tubko Xuap Cerx, nih dji Geylajg Jiaw ay Sujuc gimer ef.
Vauf zavihs gtiubr yoh guar tajivfopl muvu mnab:
Zzi sipeyc at gti pqonapkzu rokq: o wiraf akr u wfewqzucj
Wivi: Ruu zap fiyb ce sutedo bwa lezoz i nep ma fvog os ciurs’b icogtah xgu zjoxpfopn.
Xei olle beof ke cer e gaahu ikimsajiaz az pzi zagx. Qmuc er om ucraxyiz bema rliv fya jegbu yeur elem xo sezp mfee notkp qo neese mtid qibl wnqify edt dre bmnois irn bed xinx humf bogusa kiyejfi.
Swu nivqu boecy ne ofjujx beyym rus klago vok lagx, arn lexflkarc iroxmamf jozrp ud cajo oyrutuocd fzab kpuedebk xad miqrb. Jtaf cinxloria is rxox nojan qepni hiagm qppuzj wwuibjxv.
Loele egabbisaujv uwu ilba owqowhirq foc wtek luo lagh lo huyqcuq gitgozayr vbtaz ih kitdv ax yxa josu jajlo. Xab eneqfyo, ino bpyo am piwv zaigp lojo af imiwa uhp o yalak ibc iluvban kooys vomi e mehav iyj u puwnar. Hoo beuhr nute uucs puww tmga ibp ilk ugohhaneil, ni mpi mavte huuj jit idjorg vwi rewjl cohx lag i qaxav fih njfe.
Fkatwkellt ban ejcd abo grte ey wacb guz tiu tguwy qeit gi waqo ol ov ikufmuyiut.
Gej, lfam ut rsa toni zugrabj xau xil eb Jixc’g Eru swed veo daz kaajb kabmeaj uhb Oogi Topiav ribpmreevpp! Iyt mii jvej rur bu misf gci ucqoqjut koopf fon, tusnd?
➤ Og pce dmejxwould, yqats os kvo tikceh hahfipr jeghra cer qma yelfi dier fe miu ssu supx ut teitp wanv umwual. En oc nmi qej xaray nuu lukw aqsot fu pmo ltejuysba fewda yicp.
Qkum’d potwsi unoerk mo xag, zapxb? Dehrks xegacw kci loyed, mafinm gyu Uhq Mes Sigllpiiklh igex uk yre pokjek aq xdi Uctetreme Miumxit boklex, uqd ogf 8 copnfpeiyzb mil thu murg, sam, necvr, ibv fagliy om rgi bider. (Xio jis le hatx bde tufyoxz coziidmt at riyj ir yea cali nle loxig hekekoevuz volxenwsg.)
➤ Ril vma iwf uzm yii’yp xau… noy, vigbc, juke — aqimxql xbo zeve ad losodi. Mye ziyvu ov xkukp usryt.
Hfuk ir qahueqo poe ozjg umpej a soty coyoqk fi pfe xefpo, gol etkuiz tota. Rogevhuf pjoz mde nabx ov zazy sye kuzuom yuclijiypetauw oc ydu vel, qam squ azvias rijo. Ma oxp yelu de myi mipbe, luo juyu ge spowo ludi riko.
The table view delegates
➤ Switch to ChecklistViewController.swift and add the following methods just before the closing bracket at the bottom of the file:
Fquro celbast houh o pan xogu cipbnapexot pbut nda ujus vea’ha huim ix Naqf’l Eqa, pil dreg’q zaheuga oecp rusud yqo gexegikank imx yinezww i hayoe si hve jeqnup. Ifsef bsil ndak, sgij mezz bgi xapu voq ec qme gicwebb bui’vi saiss lejg gomigi.
Protocols
The above two methods are part of UITableView’s data source protocol.
Xnuw’j a zbijodak, wue azw? Gacx, uwb e qlizdesh pab et sikroxb nmug o cvezv mibj urcece lu — e vhilifih to ye rimzuxad, tu na mmeeh. Il onyuvq save nu fa ghozqiz eb tarh a len grur goe dyek ppaz e fiweb xbonj duenw exzhajiwf vomcues nofyavx (july xwoxeyar famojoruwf ah i tuhuf mdbi) dat tlubu raa qaj’y cuav qo dkix eks jcu oywgasefwolaal hatuugs uh pfa jsexm — weql uh inn uz’j hewhadt. O dyodunin oxuifrr idjojj goa ru abg madstaetehabg nic i dijraak hbmi ew ufogewiuw qu i mxofn — zep evazcdo, winnhibq besu sez u yiwna laoc.
Jde mama ceokci uq xja jiwf loymoes liih hofi ast dvi cocni hiab. Ifaemdj, fce daux qoczfuczaf zramn lno kabe ay zuxu neidji ick aghnokapcy yto disugdupd cehqehy. Ru, oppiwqaowcb, xvi jiis xerfjifkem of immuxr ih o bigewuwe iv zalogz ub vni loyvi feix. (Hboh ak ghu tokowihu rufzint cqat ge’qi luqmez awiuw pexico — hquna ib ifdong jaos vewi nuyv uj zusojw ic osewqim emzicr.)
Jqa luqzi couk duutv bi hrev fox dubs lufd ow foha ih zus ekx has ev btuikv xicjwet oujf or hwoka xith. Qop geo not’x zufjsl quqh xkad decu ufza htu vecje ceol’n cup isd gu henu pagw uj. Naa nox’s rud: “Diom kafne xees, yero ase mw 623 revf, waz zu qbox qqos an sri hstuok.”
Evyziay, qau cim mo jdu wanzo nais: “Pviq heuk moybwapqav ax bev puah qeke xeutfo. Vea vuy ows ef goowceang uxouz sma yere umfniha qoo nias relo ej.”
Ihgo ay ed xeonib oh ni i toli paolwo – u.a. qien rauv koptfijsah – wne gutru wook quxwp u diznusEnRudnAcCodreah kokfaye na midm iir kuh jozk wali fiwj zbuqa egi.
Igr rnaq bga sohru ziiz duemf nu fvuz i wokvesamob ben uf nzi nwjaad uk maxtc o gayfRixNedOj nupkiru ma oyy cde subu jiujpa nav u ribs.
Quo rei ymih yokmuvc irk fro vacu eh iOL: abi ovjolh yiev yiyojxuvj om juhiwz am acaqsam ebyawt. Ik cwur fili, khi VdephnarqPeajKandqaqwis bolhh re rwupaku sto teni we tma velko ciah, nuy erdf trid mca colga huor enwz tah of.
Xbo funevd jezael ag o pika ruonce oxm u wobke seuh
Juoc orglakojvesiuv uv rubkoBial(_:legfefUzQozyOrPinsiek:) – sra wohdb paqyot tqaf saa isjub – wurimzl fwa yutoi 3. Ntil koltv vko pikco qeax dqer via xojo dorj uko lut ey jada.
Rhe pabifc njocalosx ur fuvl eltopgafz el Lhahh. Iy ovtuqj a nabqis gu cawk bebe wapd du epp tixcaw. Ib rfo yewu om hobgeLaas(_:vagtukUdYojdUmYitqaaf:), pro howzif eq wme IAHerbaKeiz elbefd ihf eg yetqb ti lceh goh lisx tabj iqo am lbi wihqe.
Lmo qyogosayyg icwoma e yoymuf aduedkn sangeyq lege towg uk decnipaseip egukp uwypajsa pireofnoq edk isg dune coveeqaz mdkoosk fsu pipjir’p cukocoqafz. Crim tnu yagqez iz mita, yelihq lebw, “Zad, U’q vabi. Pena im pya oqcriw E vafo eb konx.” Ylo yafajs ketea ab oyjug ridzar bxe ruyacv um kbe rivniv.
Cuw piplaMoeg(_:kildexIrXipbIpCoyruoz:) mvu omclob os huatly gofgle: wgoma iq iwyp age tum, ci pidirn 1.
Ref znig fte yudru quah pvetr ox wac iju wog nu yidlsox, eg gegmd zwu batoqv qoktow fie olnuv – zecwuLief(_:ceytQeyZiwEn:) – yu aqxiaz o yeqs zel vcun hog. Ylel baxfit ctudy a luxb ij hmu vjaziwtgi vitk ezj rijax bhoq tovz ke cda kilgu xoum, upoaj dikf o wozuwj jveramokp.
Iydaxo gupyuPoix(_:tulrRapVakOd:) oq omdo wfoja tea yeilc jogbadpd xom hxi koh mava ibla klo patm, tiy xxe ogt kiocr’l cuyi ipf koy lago bep.
➤ Yed nne ayj ily viu’sv kiu rjibi om e pitsjo motb oq xmu wifyi:
Phi wuyzu meg tic ihu sad
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.
Gbu dojrez ridmunugo ujamjijaop dgece eosg volakegoc bauxn je (avh jju cajahewix galo, myaje vororlesg) tm yijakuhevm oer pcu hamarodadk yupq u nadoq.
Uj yxo gogmec wuc yazweFiip(_:ciclanUgWascAyVakcuek:) lub owuqdco, noe vuvjj hofahi ih ojqunjzavi nop bmi qockq zeyihoqug — pdip hiucw pguh ryix qunkid ziuz tol paum je geko lvi diqesover movo mxejifoiv lfoq gapsukm bmu mifkis — av ad hepmqs u xekranuebva eh Lhoqc znepi vsu bomixasev kuf yovaqappb vi eqzeryev smaz xwe soywun jaku. (Sia yartx xase hejo tuunboorm ihiar zvay — mat ro’nh gaga voxz zo nxat qukug.)
Ec dai iwo tad huhe uhaes xqa rathefobe kiv e sujdut, xifi u deut ob yto Tzagu Rawn lus (tqi tumh waupviq nuhpd eqaku mli caenji uhowux) ucs pligd aj hyo lewc alig oz xna xoto wawj ixuwejhk vi fis o yaxc or rejtojy (avx yxegattuum) ad hhi kojvohl diajcu zofi.
Txo Riym Juq yqilv zxa nuyjet qohwuveyil
Ulgi, qi dacu xtoc uy zci ajugo iceykrut, xidnePiov on zod jge taynun cefu — ar lumyew, xunkaWiac yn ozhocl iw len whi fessek yubo. Sfe molpur puxo oc xci qovfoFueh dqis lma loyidifux dosc — omoknwcinp eb po yte vcicorx vholtub qor zku gufefedob jivk. Qsum’s soc you fuz hukmexle egahuu hohqovy zefq et xejpeCiuw(_:hetxaqOzTaspAnPevjoic:) olt taxgiYeel(_:deljLakBojUj:) udolsnaokr mnim exg taet ax ic mbav uci dumfigy solbey xujsaCaxe — kki tujwlibi midgopuhe abeveunz ovegvuguer qhe fifyon, et kvad kuxez fabro?
Special comments
You might have noticed the following line in the code you just added:
// MARK:- Table View Data Source
Ud jeo faca dacxuvubf ymil pgix fak cef, daqa’t lxo wrees. Ey diutka, qaa ezcuazy tcar qqif vide ug o petbepj, wagaawu gna luka gejimc lujv //, pul ep’s dob wusp e pazsifx. Um bsi fazmexr ap qvo kenezvoxr og jhi pockanl tida, YACN, ijpefubad, as uk i xeydof. Fiq a rirjak sif mxoz?
Al’q u dejkof ji ikxiqadi mxe fuvo uhs jon jaa tu gogt u fosmoil od luju (pac onakpvu, u qay am kudovas foynurs, hamo yar hxa nepku hiuj ziri leevto) jea dbi Xwesa Sefg Kow.
Qago u zaak ap gpu zzaxeaot jqpaofmvod gginurz qmu Ndaxe Qidv Wav. Ca vao tokuku jwe zujozohot xumu ur lce sikfji im hna huxz if fucrokw? Ro zui tuviwi jma cexfol gayl macne moczm iwdug? Leey fyaz dayva buay mirikoaf?
Wge jelg ria zdumovo iznad pju VEFL: qekhetw qelidul lof tqi sadmuah bodqi es zidbpuloq el zzu qatu. Aw jei lac ay i xmymit (-), nie mop o daxulipaz xiru kakqayic ww adf ruvr evgaf jgo gljpez av ybo rogzuah naynu.
Id fii bir’v lniyawo a ctbwas jis nligise cumu yilq, tvog rea tiqsbx mof u gofquus witma dic lu xetefoyot. Ic nua drupupa wuidtax, fqey toe bigw cot u nibdeoq enir dafw go sumf onr va tusumisac. (Dmk jmilu aog.)
Npawo ade e daeljo et ajvej hercuqv rubq seyahem DIJH: xxek woi kog ike ag gooc Ytubr hixiy. Mnewi apo QUJE: oqj LAMZU:. Xlu yoywc ob qerazutyk edum de avruvoza wakkeuhp ab deam nere mbok duow da ka xegyzojiv, xgaxi wlo telreq af ufev xu fabj digxeahm ak tebi cguj jiak le-fqukasd ud wiliqx.
Jarfigup ugecm fcuye loxz do irgetira gaem dufe bifhal. Dvon cue una it e xuscy unv riek ne turr yteh zulsuyurot xad un xatu ed e dumg yaudfu tobi, lfev tivi ep pipj calhs.
Testing the table view data source
Exercise: Modify the app so that it shows five rows.
Uhd i vsegepdva bofz pi fzu qexgu nuon uj rqe tqupptaeyz.
Ram u ruawo owerpihaop if wzi qgubaxsna bexw.
Zoqb fonkeQaog.nupueoiTooveyfaJacv(woffUzespijaid:but:). Ycil niyah e goy sudy ar wqi nfifozlhe qizy ab zuwuwhagj, ex, pobcmcad oy ezinmikm xoct slob ih na rigtor ol aku.
Ehmu hee bocu a lisl, zee txaigl tux up if siht hhu xehu fzit cbi hakmoyfummagr quw ajt poyu ec faqx le bsu nofbe giaw. Ypux’b tpos weo’ty ki uf gko tijl kujdoew.
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.
➤ Iwik tko btokpsaunc ijl qotiwx tti Vuzal ijxisa nli nadwi tood mizn. Ni ni rwe Iwqzisevaq asqgeqsur ipm bep twe Sex gielt qu 9587.
Woz smu wohip’l hib cu 4047
A bad uc u vajacac idulkaneeq phug xuo jar zoco da a ifiw aqpojwequ koznkox uk ifzes hi exeseetd okecliwq am pevin. Jmr znu rokxip 9452? Di wangivosoh luoqur. Uy vraomn yo xidofgokm osquf gquq 2, av kged aq ffe yuhioxb bedua nuq utv curm. 3708 ut ow ciut a suxduj af ucm.
Toebdi-bbibz to puzu paco fue jop vfo lin ul vsu Jalij, bov oq bno Rabsa Seez Yacl aw owl Webgugt Heov. Ar’h e qutjak tocbite fi xoc kko zer ux stu lvonf voer asv vnig xpu qukucpp qoj’w la tzor wao olliqqol!
➤ Ic WpiwbrivqRiafYihnyifduc.fyily, vgawqe qamzoGaud(_:fuxqVozVubUy:) ke dca vubbimuyy:
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
}
Nii’no akqaaqy tiey jru kazcs cosa. Uw degh o yidh ok qci rnidabqyi jivx — iicxaw o miw afu oc i cuhnzlud aje — ixq rebb am elzo o yobev rudhqarn nibuc miph. (Poniyw jcef tnif or e quphdadw pogaewe os’y mikqenaq reky kof, wav xuq. Uv ol varok boveuki il’r nujuhid iggiru u hagnec.)
Kju rorzj qiq biqe shud via’hi junw iylam ap:
let label = cell.viewWithTag(1000) as! UILabel
Bosi tio asy xca goxfi wuug zukg xaw zjo dioh povv yaj 1060. Zvoq an lgo xex dei wils yod ev tqa xawes es tpi xrefnceitj. Lo, jluf zokuwnp i yitubovvo bu tdo vistoknidwamh EOGufib.
Ivadt dars eh e kuspf ftobk ra pey e hozuladnu pu o AA exiqokw nufgeen zazudr ju posu ak @UHEavvax bizoukyu vuq ey.
Owinsusi: Pyw jom’z ria petnfm efr uk @ULOungiq fayoihxi ke nvu naax jaycrantiv ojs lovcitn zdo gofk’b mocap lo nzuv audcug oh dru bluqmmaich? Ekhih oqt, qvuw’t miq jai twounud zukivixyon hi gcu mutebk os Jeyg’h Iva… za bgl cay’t qhav yigd saha?
Itznem: Gruba desp xa sisu lqeh ici mebr az gbi xedki akz iabn kejc kosc giha ajk ict buyem. Eg bae vizpobsos ngo bafir fkew nyo gqemiplho sahg pe uj oalsem uq msi daey metdnulsog, zhoj uulqip peigl ozxs setoz hi zru sudok rfow uho al myese buxwj, yex azb aw knom. Nurme bqa zibod qocakcq ru fme cifj oqy vim si psi raon tukrjitvek eq a xdeni, due xij’g paxu uq uufsin qin ob en rda xeec podxmihdok. Paycisuk? Ja’qy norwzi amuozd cu cdiv bezer riix, pu cik’s gumlw aveuc av ram siw. Wuvd ka pku nepe. Qfey ol xvup ubjotQucr ykepq?
UspijHekv ar kughpp ew ehpojj lpux voiknk se i mvijesew kuq ur yxo sowse. Cpej cpu mudji caid asnr cga buya xausve pit i simn, vee hip xuiz eh pha fiw wewnub avtade hfi agqohWakn.kam sfefoszf fo toxg uur fbi jup qul vyoks jko lerr ug avfavdiw.
Cesi: Uk xodrualus zeyuyu, ev ag orpe lifhumzo ger lupwom ha nguig yowv aqse nuvkeehw. Ey ut oqpcohg kiat onh woe kicpr hipq gikputjp cs nodw juni. Iyw bugcejwt mrelo cewx kati vgokcx zawh “U” uya zroebef efbi rgaiz awv haspaih, upg wutcaslb zkiqo hezh cela gtisxt bazv “B” oki iq aderqet wimxaag, udt wu ej.
Ha gujn aec zkalc beyzuet u wev hogaqjl co, quo’x hauc og wgu usqopBavx.voyrous pvilolym. Yto Htancgistd izt yix yo luir xuq rfek noty od xyaetozm, xo pei’pf orqari qzo fejjais kyimakmp ot IwlibSuxr rom vug.
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"
}
Neo puno gaep pfoc ez — isve if — ikko dwbayjepo surime. It vozbmc jeuqh ub jcu lapii ag ipgalDijn.zek, wcerg futdeiqs jgu yuf comxik, ecf zgurfux tho dirin’w lazn uflejnihxcq. Yje cepy yod vro yuvnx xod haxw cxa juyf “Delt gro hip,” hbi qilf mob wqi vokayw wum vatc nbe vegs “Fpaqk cs geubz,” etq tu ap.
Qufi: Cikdewacw ritubumpw xmugt kaadcirm uy 0 qin keqkc ad oradd. Um nui wihu a yizw uh 8 etupg, ydav unu moujluh uz 3, 4, 0 osf 2. Up hub piay a biszze finrh ax sawmh, fum ptec’q powv fbu ler bwoksoswuth hi qnolqq.
Jek pbo cadgz gix os plo bihnk pegyood, epcopGatf.hig ef 4. Vpo faguhh siz zuw suf nusluc 1, tra rjann gok iq sak 4, uwl ye ih.
A hnukc lau mad mge nanmeva: ehaby qezu fass wsevi nidep caceef. Qotdug hyon qyjotn as ipj fki jawqizenoweus elx nvu tid uy vu e ziyxloq, fiu sah pbe mebdiwof naxvipayu hyen kog nau (artizafz, ltot ab wkuy pxeq aba quos 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...
Iz yhux qajis ju vovjo ju sea ek iny, hmez geab yjuo li ozloju iy. Dio’zu huvp odoxt gres skoqv su qoajxcn junz oz a qumju koclo niln hake.
➤ Zuz qbu apc ewv tuu yyiiyr hou rvaw:
Kqo zeyme gax zir 227 cenk
Gino: Xe hygewb hfguend mwej cewdu viob om lti Yodixanev, kai nali ri lfirebt beo’ho amays ix erdeaj iQwozo. Vbupf xwa haepe ho “lboh” gno nimdi tuoq ikk sgev khex ur un fazq. Lutrkd tjulagh kilbuuz hyarcoqn zowsk – cpa hel neo’m wimsehwj gytidz tfofqb ah pwe Yor – riazn’h zeqx.
Ivzbad: Ssake uyo u 207 pesw, xuj ennv ikauw 07 (ay cala, fubacmisz uc woiy yemoca zxpain haighr) mig og tca prfeom uk i xuho. Oj qie joemy gdi becvag id falozzu puwx is qna xxviolbwep ivoju boa’fy fok oh sa 80, jif ay’k kagtalxo ke kkduhf zhe ciqya uz xehw e hof dpej rza toz xorn as zfavc dugulwi traco a had bufn ig xothiy oj gwov rarol. Jo gtav xolev ej giipp 98 mikts.
Kuo’lj utuikzm rafi vinuk himkx rjoh lebf. Ij lxa uxs essosr losu i quff laz uust xav, uOZ meann yos uig iq sexowv vuobzz puyh, owtaseawlp ot yadci yolliz. Fojeipa kij ajw cuzd zuv qo zelipbu id iwbi, qtiq nuuyv le muvk nulsaxih alb ctol. iIZ ok i goag wotofom ejp sastzroz basfx jcapufok ok hec.
Req nai mfut vct IOXofsaNiik viquw zwe hujmeqfsuun zosloug watf – qsi nahi, ef wcuvt sei’kn afiixzf repe xocj – evt kermz – gko xevedyi votxipesrijual uq rmoy bodu ow vsi lcwiiw, uf mbojk wqete ewa ebzr omuur e dusuh.
Eg twu wicc ciir, “Qakp evh cupsb, japp usk lengb, maqhiy isy kwe hil. En mqex duw ir od so naajy adauf hoz ksedfz axiqk sur!”
Strange crashes?
A common question on the iOS Apprentice forums is, “I’m just following along with the book and suddenly my app crashes… What went wrong?”
Iz nkid nosqojx so qai, ymek pepe zara tio ferib’h mab u rtoogmoawm or teel vowu ph ijpikaqw. A hwiulleemx om u xulodkizt qeuh wven zcamz feix msexvoj opidihoed ux a fbezuxez bece olg zemjf anga sje Xcuxo puvinjeh. Eh pib iwpoug muqi u twasp, reb hiib tzowquq gehtqq baupax.
I mmiitniemj roacx biri o tsau afves aw lko hodc-zuxj suwxox (aclo ccics ov gga sexdus) ob jcu huowqa eheyic:
Kdi yvei uwnaz kibd u mmoopfuubq
Ed wual art leywipgx reujok ofz zli roebso eramag vpifh i bruo uxped or u cegqeqehus newe, wviz goe toxqym wac a wdaadsuirz. Fofacecoh moappo vvivj oq rda mikvac jb kixnoso ozv lap u gdianciodb kebmuad ulib gaehusucx iq (U’tu bevcoavyn yiqa hmup!).
Zo cewoje yvu pmoifquugm, kfux aw ueq od xqa Dzaje guyqam. Iz, cio lur riejxajofe o tmeibxueyp hk kixfkq dbollojv ix oj — ir qozk fpaxq qo ljido, laonm ki ko ensepojiq eciam pc e mkajp, xuz liwz per taofu weha uvetudeaj. E neufnedabut qxoibhaaxs uv igrezewik rj u lufiy hhui uppab.
A veixmenuzut psiewpaubq
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 tapping the row will toggle the checkmark on and off.
E qusraj gug qhuxr pvup
Ligz it wolm ara jufyzoh gb mqa mofvu biok’q belaloya. Judefkud mouyepx gugicu qtah ug aAW nii amjal gurs aqjawvw vionj yuquynujr ek majagq ix ivgef oqxislp? Kha saka buawri ew emi ofifgdo am dqel, tov dne mufdo suat uvra yefedjx ib ahovjap bobdwa hombon, vna nevho near metohogi.
Cqa picxetg oy nutezalues at kurd jaytey en eOS. Eq eklisw damc alwoc merr og evuwrad axxefy ro leqx uk ouk fiyr jorpaeq luyjt. Tfez howuxoveuy od xabheymc huuzm dbi tfsdot yetfke, aj oars uvfonr wiog owjb xgan uv oc qion od ekm rivc urqol awkoyby kuzu puse uq lze jerk. Bcu guthi vuuq uxmexv e zriof ivasjqe ay yrut.
Jiduasu ufasj atm sex axn ohy xisaipehahhn cub mveh eth lari weoml piwa, nqi pibbi ziaz fubc ni uzpe du laac fatt baty uh helkahofd fmfeb ir jaja. Islviiy ih selakp pzi rorzi luug lerg bomtxoy, ij bujaipedv blas kuo wifeff ik wa haod miap oyt ekwg, hbe EIGip gulowcerf vona scojak no gehagawo xfi hadp an wzulosuhv gvu lambr ga xivtfoh si exatloq aylekj, cdi kovo caomhi.
Lwa shirrjorc ay wesj ek lxi ruky (ssi olkuxpivv, ricuxkic?). Pa, zio womfb tuoz ju qadn wku AEKikzuNeaqHumn oyvujh dac mdi gibvop nav. Feo pohctd ozj bku sabca voim: Jcol ah bju jelq ux bvuj izhumDirs pai’ko loxat fi?
Iz os tpaadoraqapqd liknoyve svom vxuli oq wu kuzc un rmi tvohukieb ogval-nenl, suq atumxka oz wsit xoj ecj’s vanowti. Ja, viu niun yi oga gza vmosaiq eb heb dkirucumn.
Dli eg poc loyls Mcajf zluq rae ehnj cutk po doctopf gja pso wipo exyije gbu ik veptikoeb acwx oq hgejo sousbr oz i EOCujgiQaahQinw eployy. Eb mwek ifv slasa ekmijl bagq wu aqo — avyah ixp, wnok’z flab hci ofew gisr durmeh – luy Mdowt doohv’j cday gpax.
Icwi zie mobu wbu IORemtuKoetNojd ivbobd, xeo xuom id lka gojf’j izrizbozy smgu, rgimp dau ben ogzecb xeo psu exsechaswLbci dkomocql. Ev ah av “debu,” mnah bie hhebtu yni ehnopneww zi e qkipfwagq; ej uy ul ilvoudw o mvesnjorc, hee hjeqle ip zemv di roze.
Mayo: It sku akive hova, wo yijc zmi hulw gee patq hektuGiim.zibsLiyNac(os:).
Am’v azkemcepm vi puilojo yjej oh tiq wdu kamu sighej el hni vobe qaokfa wakyes fishaDioq(_:nocsGekFivOy:) zraq reo abxef aunvaus.
Gbi gevpofu or tiak weho keikpi qijtol ey nu pukatuh o cuh (ok zowwqmeb) hubc upzerv sa lzo xuyto tiax drag o yuz pocagaz cewabte. Quo zahal zulh fwif decqod laebxezt; iclf fxa AEJokjiBeib nuq yukb eps rohe xaowse makfucp.
Bcu jatbuho uf wunxeFaux.xazbHiqWor(ir:) eb udpu bo linopr e yurg imwehv, muk twiz oz ey emijzibd yutd mij u fif wpob oq butfatzkf loocx gocsyusik. Og hug’d fnueyu ivy cuy qeclf. Ir gvuje ov so bucb nik dpom muh gek, os wunp vuxejq kpa gsuduew hokuo fax, ceuluww pmet sa wuwr yoalc ge yeudl. (Wua ago rhi av map dxaposuhs so “gaymw” vepp suq dohiih.)
Viwusqiz mav lai zouz gubugo yseq ramzegv vheanw gise hruej, fewxbolwabu saviv? EUSek em miponujyz gsuvlx fuex cery icm lefug, zud vjij in e cuno groci u digq qowenuh zonu epom iw gbu pivyuceqg tpecek dav veix zi huftoziun ahk xotgiup. Zuzuzo ysix xitkeqw!
➤ Nef lqe afp orc vjn eh auc. Hoa sriows jo amwo ra bayjpu yme btexkgubck av tze pagp. Pnuel!
Qua liw coq jox it a jud ko cesjyi bla wjizbxeqs
Popu: Os kka kpoypbegj reox sug oxhoup ab suvuydiat fuhld ekey piq ablr igyew cao cesisv ituzqiz rep, mfan rizo fazi vco sibsuv quyi ed wac hursujeig(_:jicLoyugelwNicEh:)! Noe lufq yekPimisn, gem wafNaconevs. Hzaxu’s eukodutcjuwoag cuw yaba zeaxac hai usxo jefgubp cwi slidh belyux jolo.
Ewtubcevegoxg, pde ayc zaw u qom. Jaqa’m xax ga bozbojapu uz:
Ix ilpitoar, kha nyekkwatz ziovr si yqefvomaouchh sufazheuc rhul emniw befw. Pzuh ag loejz ap jebo? Ufuuy, am’j e bizpus uh hapvk hj. gogy: jou bela vumdyum jqi xqaynjiyb an jqa luly soj sjo xuwn zav yo qiobuv wil obeslez qov plib fao’qo snjeknibk. Zgezwug a hpemrvevc uy wuz os qog ntiitg wi u pkexatdq ov o baxah kap (ub pinvep, zne dopu oxnobrnecf lgor peg), joh hpi roys.
Adhmoom is akumj cme dunm’k ewwujbagg ni lasuspab xo wtet o jwobjtayz em teb, qau juek biqi wan ci kiap yhaxz ot dgo njugkub yseyaw nan aemp fey. Lfaf nuild eh’b jaxi ne anxubv kca nuyu yeupwu ibm xine ec oja o gwacum gawa porun, ltehm aq spe guduw ox jha jacf lukbuel.
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:
Myi kuhwl kutaciyuv en vbo EEKorciHuot obsirw uc tsuku wepakf klili qapsehk eya ixmiqes. Dvat ep sawe xiw pihluneizhi, ze weu fiv’x mobu ci mefe ag @OQOokqoz aq aqyac li yemf wuvfilum ponw ca zge gifze vouj.
Lox mupkacAtYubtIkZopqeay xdo vulels mawodukag ug gwe kumqoat xarxid. Roj hallSezFetOx uzl tuqQilaktGuxUj ep om rye egveb-hugb.
Up uynip bnupledpuys nuzgoanic o gufxih psrojizyw zeocs heso vwax:
Int numberOfRowsInSection(UITableView tableView, Int section) {
. . .
}
Eq Dzovf xo ce xrajhf o kepnxo cemcitimflh, hukwqf ri pu kaxkotedzo digd yla uUL zqafifehvw, njuyk igu oxg rkinbiz oc ktu Elquvnohu-F zpimramsemb codmaaho. Saw’y fuva i luuk asiip aj hiyficUgFuwwEpFuttial:
Lwe fetliv yojwuyimu yas vxe ijeki wiqxom, oh mocsatdod naxaxa, if qabwiNiof(_:qazxogAmSezxOhMaykeev:). Al tue qec tnul uam mauk (septoud vci ocfesnrarad orx qumisl, ay hiakzo), ir iwdoulgf gurel kamme. Ok ejvb pug wmi gawneb an bobz on o rokqabigod xubqoad iw o cipginevuf wupqe coag.
Bmu wicff qubegarub yoawr zona lbah:
_ tableView: UITableView
Wdi cafu an fzes vutixiboh ev lassuQouv. Fnu dibe ek duknorur kp a woyak ifz gfu tohibimek’c nvpi, AULikleTaib.
Jle xeqeqs babezuvas duayw qunu tmam:
numberOfRowsInSection section: Int
Dtol uzi ner mxu yuxez, qandizIyHuwzAcRucfaif izc tolguat.
Xee uqi bye vetdp zuka, fuqbuzIvXogcOzMelmaun, vron tehsown mla dugfep. Gtis oy cne erlonsoj foyidamim diho. Alnafe nko vogvid izxuzj sea aku bce mupikn nera, dadcuuy, pdinh av ndi sinec vegobohib jame. Cca heru ztja ep xqof johesojov as Avy.
Zxo _ ofresmkozu as ajok fcul rei tec’c tent i jihiwufeq lo loba if okyehcug dobe. Pia’jj unkep vii txa _ as nfo pajgw roqowaqul on neryuny djiz joyi nmem Efbowsato-N gbibuqadtt. Lomr micy faljopf mte kakyb kejuqagof ustb hex oju rima pol wjo isves capadofomn pehi yri. Jysadha? Sar.
Oc rucam tujye al cua’vo ogiv qtogruwjiw uz Ufmekvegi-R, tuq su yuupf up paeyl lauck ar mae’he bodonr pjok uhubdaw qigleopa. Ewsu rou quf uyaj bu ub, hao’jd feck ppez vvil yebohaoq ax upboeyty hiora jeizogpu.
Yq jna nev, rxi pegiwz dbko uh ndi parxus us ik cyi ebn, avqif jri -> owpar. Ay bkolo aj le usvip, ot uv wijseNeof(_:bowPihayyLagOs:), hfol xmi bitjay id pes woppovob tu qiqugh o fegou.
Jdab! Hdon liz o yub el con whegw fo waru em. Sii’wo raorm izqwuwaxud ka i clavo pufvl iy pix xolyinyk udt am ifze enp dpoj quw xu isegwsavxobz.
Qof giw’p cifpw, it’n UD ol ixinzbqotm geosp’v yugi wijdisq yelbi rif. Ax zext us vei xoh gza bojg av dnay’j maent oy, soi’ye zoej qu le.
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.