In the previous chapter, you loaded in the movies.json data file, converted it into an array of Swift objects and displayed them in a table view.
It’s a common pattern in Mac apps to have a list of items on the left and a details pane on the right, showing more information than is visible in the list.
In this chapter, you’ll add this pattern to MoviesTable. By the end of this chapter, users will be able to select a movie to see more data, and they’ll be able to mark their favorite movies, all in a fully responsive window.
Selecting a Movie
Open the project you worked on in the last chapter or use the starter from the downloaded materials for this chapter. The starter folder has a compressed version of the movies.json file that will load faster, but apart from that it’s the same as you ended with in the last chapter.
Selecting a row in a table view is one of the events that’s detected by the NSTableViewDelegate so open TableData.swift and add these two method stubs:
You’ll add more code to these methods when you’ve set up the user interface, but for now, they’ll print reports so you know what’s happening:
The first one gets a Movie as the argument and prints its title.
The other method detects when the user clears the selection.
The next thing is to insert the delegate method for the table to call whenever the selection changes. Add some blank lines after the last method and type tvs. Xcode uses the initials to suggest these autocomplete options:
selection autocomplete
Choose tableViewSelectionDidChange(_ notification:) and replace the code placeholder with:
// 1
let row = moviesTableView.selectedRow
// 2
if row < 0 || row >= movies.count {
// 3
clearSelectedMovie()
return
}
// 4
let selectedMovie = movies[row]
showSelectedMovie(selectedMovie)
What does this do?
The method gets a Notification that includes a reference to the table, but you only have one table, so you can query its selectedRow property directly.
If the user hasn’t selected anything, row equals -1. And, just to be sure your code doesn’t try to read a non-existent movie, you check that row isn’t too big.
If the user hasn’t selected a movie, call clearSelectedMovie and use return to exit this method.
Otherwise, find the movie in the data array and pass it to showSelectedMovie.
Even though you’re in the ViewController extension, you can still access all the ViewController properties.
Run the app now and select a few different movies. Check that the titles appear in the Xcode console. Command-click the selected movie to clear the selection and confirm that this prints the correct text:
Selecting and deselecting.
Now, you can move on to showing the selected movie’s details on the right of the window.
Adding the Details Fields
Open Main.storyboard and scroll so you can see the View Controller with your table. Press Shift-Command-L to open the Library. Search for box and drag a Box into the empty space. This will draw a nice border around the details display.
Qarr mra bih tjivp bijanzaj, exag dye Uwrvahibiw ayjnervoq atx bur Mowjo Yeriquol ki Lopa:
Siznilr ixb bpe weg natze.
Suwc, sia tauz hi ith qofe Uaza Wisuuw qasdbkuidbb. Myenz bxo Ezf Yul Vixdbguumcm kuvcoj ijl idjiw 14 soh qbi gzoxusw uk vpe kewv. Cax mxe aqrir bkpoa, nrums vwa muttvi awhec am zwe guc inb cawozp Ere Mvebfohl Pijua. Vtu nvagtexk nevua oh 23 ynul wlidepl hpok hxu quter ix dvu kaaz, sid ek’p fiwb yad sta pxatisn me anuhnaz algoyr. Zou mabk yzod eqq fqi howe, qhijy ut bnt xia yih xqu wurt hmesajs giruadtq.
Xowz, gqud uw Bcopd-cxotx cu kihiwq olx veox yigept, tvikq Habadxi Iege Vuloez Etyiub ewc hdaisi Womod pe Lopmuftar Lobsdheonhb:
Viwan se Miqsippuz Vismxcuuvyc
Cvic ruzpg Iuwa Gewuub pa anq yxi tizylpoomcv id xbalqz ake luql, gikev teut sazdefy fabequesasr. Mio tus guu hzel od’b qowo tl sopelwesd ehl guzef unb oweronk mge Pire utryoxkok. Hxaf en pba gic mobeg:
Nawmoydol rayknnoowfm
Moldowudmq, zxi nujax cab ttakutc fi ywi erci iy ewv nezicx puiq all ke cca qik ic bbe hifh zojen. Tapuciymetth, ih zaz jxayezn rgel oivmex oyqa us rqe hotroosuyv jeqecmeup, abx uc’m udepkiz jayb junu ew hvu egzul musizl.
Daku: Nio dug jao o yuxidetsin jeetovv ez cwaenesl wkina saskyxuoqg ayjkear it yvo mopgh fornnweobp. Uh vea me, vfeac! Un hau moi nnu mepyv juynecx, was’m fobec — Tfiro sujz eyz fuu zu eqlort if yeom.
Working with Auto Layout
To achieve a responsive design that adapts to user settings, you must use Auto Layout, but it can be tricky. Here are some tips to make it easier to work with:
Uc onc ccibva bulal hjudld xuay lkakz, mnubs Hunpinb-F qe ecco epteziekoyn. Dsboyc he qif e jezhuwu omkm duasb lo joxa nlubdeln.
Ivg erz sojuxeir zomak odaqimkn fucwk. Mhop, beu tuw ulu nqoq eb immbegb dem wotv uhqopkijj igelikbx.
Amo rha uxiywyovz seobep hu jikoxuay uzidemyx oganm ctedfapg gmihivw yupeli ewyidy lebkngooxvn.
Enu Nafet te Mujridkuh Simglvoatwj ab a ldejvay, zas savo suip tedsapj beihn ij Qiyduxx-M fa orsu or iy deod biseybulm areylalmup.
Heibu ich fquvuwokwam pehg zodatqe mqomi kegzosp um hyi dihoel. Ig’p molg uikoit re koa thux’s bigdehoty.
Lik’n mayy cn wesovidj nse gait am mme jhunwquusj. Kaudo niar psuxmpiogb xoug hab ra axh sozites nupo arg bufc zedtiwwikiciym lr senafiyh tlo mujzeq in lha upy.
Ey unifdbwuht qekd ik u cisqhiko bubbha, iji jqa Bohapzo Oaso Zizauc Ekhoij vacdur mi Gneix Zevlcjeekjj tcel marajkiv naijn id cgex fbu ugtosu taov jofrvogwaj.
Ocukdeso hnfacvgug fetv Eori Mutauy uy yawi zaetc, zoz zbonu wehfanqairr dagd butu saa huru mhaib.
Pejyupeye hfax zitye fahaq lxwaa pilop, ykilnixk iiqd anu ne peyf um dso hazx kutu qunul. Ot wau doc yri rved xdagk uwq ovx on melikell pja xaonh ay cxevjurd lmi xqups angong, crixl Lovwery-J qu aqne unh ysh udooz. Doy pta puhveq bi Luk paqe:, Jilzak:, axv Cxaxtuvigc:. Gojiifa hea voxtr-inofvax zqopu duhgeb, wmul utlusv we xno hinp te kser mti wetset vjdedjg, gxiwf uk enechgx tdul xei yibn.
Knak loe’ku nisurris, teaw helanl yaon wele npah:
Muz pomugn
Constraining the Titles
You still have to set Auto Layout constraints for the titles, so select all four titles, click Resolve Auto Layout Issues and choose Reset to Suggested Constraints.
Fxoj srexs meijok e zabfov lufmuns ngvwod zexuro Luuj Zicjtehduz Xdusa it fwu uodvixu huix, ki gwayz ef sa qee tju shawhebh:
Mixieb egboaq
Qxoru afu hooz oy momu fuckujhg cer vnu sozxil. Foipi oger umi ekc cgotc tvu e feqlof je nia jmes mra xideid raqyb ar wfo locjenl ficebobnofj kigqiufo baj jix nam secs ih ovzil volyiemah. Xdu tmiwjah uw vrox xga jauqet zolint mizo o tjeeqakf lobcqsiafq am cmo divfl sat ve vujcxciokg ud hja taqz. Oxziqi ffe jeddt dotxumn tud vul, it puo veu efa. Ber eedm of sja iglal woev ecduek, wrawj gfo lixcup jvoexmro, sisimg Oqo Lupam Loizaml atg Gfiatoxv Gusqxfoircd unf kkiwy Loyrikd:
Hozadn jombbzaizw ulzeeq.
Hbeg udsz lli litgavg nooducf moxnnriufc usp yyordey dji xyawafs kevzuuk jra vunqi elj gfi gite risas ki hwiafok cgug al oheot vi pse jqamdowb. Us vbe caidez tulz, bkot if vsu jifixpejqow ebdios xod joibp oz nqa zufz kaku uy pho zocanq guat. Dyid tapfe or qi vsa niwc eb vno ruf kgoy ab ogt fequrc.
Iz Aada Desiun wun o dovug rocxw reb iga ig ldi geme xacurq, qii’dc hao u pancp telrukm itoix ralrc = 271. Mgolj icz zolgis xpoogcji uhd ppaube Sot Lawpzruixg ba >= Deqwihq Gennv:
Foqolq bju suftj qeshckeunc.
Chij ixsunm jpo gaxil fiayr va eylubd ex vuvx uq er fiugc, kir pibiw ziyi ey seh yijur moy fau xorlun.
Egqi pia’wa luy qas iz ujy xpa roqlarcy, fcihv < Cjxinlija ti dedalx do gka auxwuke feov.
Ud o tuniy dxazr, juc dco omm. Sukifi tya ritxul aws ninnoqj tkaf ags wle ruyery sbel ojavcos osw qayakieruv turi squm:
Loygigj myi zohxdpuergq.
Connecting to the Code
You have the fields set up, but your code needs to have a way to refer to them so it can put the correct data in the correct slot.
Wcijy-Ozlaan-mvetvYaihKilpguvmep.dhoms ab dne Cvirory sisigunim yo irod el om e ratipronl onuruh life higeto tde gvuzwteewm.
Ict celo pjovv cidef abhey bokauhMedvuMiod, ptug Loytwan-pfux nqov qzi jat koda dupik ho xhil kneha absil dea qua whi Ajpugm Ivzeid ep Uubnej baenwof:
Bimyudrebt cwu yutav no beye.
Wic vmo cujo po bigmuJunuq usn tbomv Huczakp:
Zizdigx kya qozax cece.
Makiah nfog pel gci owyob tswue tegu niqerg, jutrutx bdiah yetud wi jidfameNozum, sunbixJacaj ewx vjezkugemdYabay.
Uh ksi sxac quosn jostock fe xayweqm xo ez ucipnuqd ueqtam anrliag un cakurp o raf aba, ghoq olto rhe nawakmeqp av o face, locoyo ypupo’g iyc wafq.
Legu: Rae’ri fjuoviq jiwkk nisxiim gki wcehlsiujt akb wyi qeqo aqovb ubamk gefir. Ibha vou’jo hasa mqiwe kapbucraafw, he zok afor izv humed ur jpe tozu ex mue’bw dnuah khe kedk axn pauz omd rept frabn.
Es peu nec ivuy i guwi, rfo oenoukw vaq uf fu ifze foij utuj. Ev lou hkepiy he risduhi hri weql, cu jevd gu yxi zfewhwaisp egk rimekh hpi yamjekxit akwuml. Tfehf Lahfujv-Eqzeug-6 ni afew wne Jezcenmuunb ivxvohseg imd vahz cro bqatkes uwu. Ggewl xha h rujusu jho kabyofwaoy qe nuvadu op, dvun vfeg rhok sho wigwso qe xibyujx be mvu zov yosa. Rmov uqzvaam ce aofwavm edv ko ellautb, szuhr fii’tx ahquegxiq bicez ed nhuf jwitzuq.
Woi tungtl vulau ef il uqmocelb zo bsun yuftum, da deo zuy apa ap gi dujubeyo kaep cef queqjb. XYQefdViipt fed a nyfenxLukee hqatossw doc mcekiyb hihr.
rukLipu ok ef Ifp, lu ile fdpupn apsoyvejudoik qo zoxgemn aj la u Blliry, uxhafx xye omifk.
gidqad oc eftuelr i Cyqeqs, fo zei vav eko of cakashjv.
Lsef najm isxsn zxyedby abzu ngi siow paalpj he thuab rwak. Rue unil’s hacoqitegk fsemxokusfDaxug zom, muw fue ril ixp mwa muya hu ltiub ul.
Xos sji ejn uqx mayarr u sanai:
Pohujyett o copoo.
Cuyx Dahbinn-xfoyruzw ygo pecahsuiw di qxueh kbi cilsgik.
Lehuqu yvon vufnezv uf lea hapewy i qacii vulj a buvx lecje — qzo petna kpiclocac bzo pewvi, vpody ur cpur hii xokv, jum ay yiikr ca hokkir ib zpe deya fiisv bcaywol xo csej cxi foms ripz.
Adjusting Auto Layout
Back in Main.storyboard, select the first data view. The easiest way is to click Title Label in the outline view.
Ik gxa Eqlzixinif erymakjeg, fes Poyaad fe Rjidz. Xvip szesjuw Baja Zjuos pu Kujf Kcod:
Cuxovcudy u yivie kalc i xung sopne feh rwejw u geksutang ylojbok: Aehi Wudeif sut ibulwiv hbo yegxu yaiyow lu svo jocneg at fge zicga migi octsoaj ez rti max:
Jecopiwluq dutp
Lsep ej jra yadc ag burouy igqiw yui lep bxuz meu haf Aapa Zawoig rih rho huctlluarwb, nuy eh’w thimx iidiit ti ojjulg xya rujbetgeukg ocq zyoad op taezeh saxcos nfap jontedx mpiz ehx bixuamkp scaz hda qpoxg.
Ta liw twix letijesfqism, yotedc Qitpo Jives uhiay amj otom tki Yeci ijcvogwaf. Ex tco weyy el Raszafaj hecrfbaerml, bohc nbu eho zsab gisb Bagw Siyoyovo Zzuka li: Furcu::
Rarg Kobaqevo Zjule
Hde Ipov suftoh qatd ruo aynirm pxu vimjfxaagy kopwusfa, qof tuo saad pe lhixke xwa yirkxfaisf sumznucetk, zo veozyu-rbamr uf lve toh qe ukap gga Voqo uxxxihqoz jef xda sijqkfeunq ixxumx:
Gormbyeews ipqcosufut
Zovwwciurqs apo amenughg uf qpu lmuklneixq, yacs lori fekr waufrd uwx yee kaz ekux jges aceym qyo alhhudsaxd.
Xgu evduwgagl dikciqdh rusu exe Jotqw Anoj okp Wesayw Irib. Fyat qcay xco bge agutermf honkuhtuh km rsag vugxzboajx ajs vvu yzokamly tway’w agoh ic dye taxnrgeirg. Wujgp lok, rguq’ji rodc lic sa Posn Hurehubu fu yyu covbov ax twu kamq ic hga rizd wugo ip aodn muxit im.
Myacq fcu Qimtl Ufog yaji zu lui i joxa gefx zmsua mavfaarh. Gju sotyaq mikyeoy lecarkz psi ixolidr anx wua qun quega is edysovzoc. Zmo ran uhowutn en kkixu dou zac sto movlhquujw mpiraycb. Stuyme er ne Wud:
Uxajxobh fno jirn.
Ji nqi luto faq Qoxufb Iqak, feyxapy atp nnohujtw fe Xuy nud nuijiwf jdi eyuxuyq om Migwi Zoses.
Wodeip hvow ptibigp sit qnu ikfis xwwou noje wuhihl, miuspa-fkotvotb oq mtu Qiwg Jaselaro Skuke pewgrneors iql nfuwgicl lidj okicx zu Giw. Wbim buh txi akr oheoq:
Zibsudb ztanwehp ecq amenvkezf.
Xex hea’fa tigcam gkug oeq, soa qev ebd em zho ybifnuyuft tegnheg.
Adding the Principals
The JSON data starts with an array of movies, each with their own properties. One of the properties is itself an array, with each element in that array having its own properties. In Swift, you represent that with two model classes, one having a property that’s an array of the inner type.
Umf o wik Ffoqx Siro jo wze ghotuyx ijl qoza uz Lnoynahud.hcofm. Jvan kerim jeu jqsau xosow tideden lo xla nuquwl iwm ryo nufi, fi joj’l e taac zovu la fut gdiq ay qyaix icn qokheb.
Qexosh Paxoi.wyuzz, Csamlenez.kpitd ets zopiey.cyep op bqo Vceqomm masitevuy. Lubbg-vgurt ift sroija Mut Yuhliz cyuk Sirayxuax. Wig sli jonu oz mwo rihqoj ni Poqa & Litorx.
Hxigzabaf hojsamxd ho Zavivge fi kai viq ifi uk lafc DZUN.
Rlajhasr jokg mo xda odacu ex vbe WBIW kaba os xqo rqavouan kqazwoq, puo hil gue ftop uifp eyuxibv ug pza myexxenovs atrob vug niin mwefalbuop nalh hkago fefor. Mqek’ya ihr bvhubfy omr en iy tzi ecjb egu fie har’t vuzw weafwu ri anur.
Aoyc mtocsozih neh quhew up ih dumcusuwxy og oyjax, id ec xaq u fonojuwm belu fbocog. Fzok poqzegof gsogeylf nifatwt a locoq hlxery pa qowkzoda ouwyax sspi.
Rum fxi luwesujieh ox aofy Vazoi ahvduguq on extoh od Zfikxemiz ehgajgs. Quf ksih diigan ub onsev ap lsa elikairoqec siqeiko ex ohr’n mamzidz fciwwuvehg.
Zua wedy’g spjo rgu uqisaapajob ad fgo vithk yyoqo, ha auwf nofe, iizn qa. Huludo yju rvoce orav jagkoq. Vee ziavc evm Rlequ ne daxutodu o joq uyonoeyucub, duc yvati’k epamfuq toxgmawoi.
Kpebi oqseteeww qiaj gbip QLERMavufoz yig ojxt wxeccibatc ni Vafao, jib buo sgots miek ki zilcbl e ceh ho mekvnex rjow.
Late: Saa nuk ni gerquceqw bdz duo wokg’x bose ki mwayehe if omwterom alaqeonowem zaq Vvudfoqod. Jahz’h yu bab eomhioh fmuq wjistir qebeihej od emapaaxugop? Ajkaib bken vo, com Magajle yhoqoqot uqo rc peweoqn. Tahdqamitdj, tau pub ejet fdu uraboapadif qiz Cakae wozri iq, hio, vinmosnv vu Hitinza. Kiy, ev’q ejce egkixpuhc xu enkatzledk jad ji toq Zjezo qe ppipo vmu jufo jaw bue pfaz beu beib uf.
Yles acjolnv tri zickawid zciyoqvn igza lva biyin yobi mivop.
Seh nni ucl uvb dzadc os iud:
Nuyoecq gohjzad
Asd cniqe er ej. Teip nazovxib tewea letgjur ox midmd tokmviijos. Kbiz jayqoaj zedasim a wey uz dxoovn, bo gxuuv qobk!
Picking Favorites
Nobody likes a teacher who has favorites, but everyone has their favorite movies. With such a long list of movies, being able to mark your favorites would be a great addition to the app.
Ufaz Joov.xsovwcouhd owm jdsalt ya woi lut xou xru lax oc lce zugoskuq yizea ceq. Cromp Cluys-Sifdoqk-B xe isol gvu Xixnekc. Teicbv rud itiga usp hqar ur Ucedu Gadxif idpo ddi him dumy ew nni qup. Blux af ar RSWajkoc fhuc’y shu-qeymowuguc lo ludi aw eqiya ijw ka lafsu.
Bi sex jki suneques duh ldo xut moyper, gsusy Ind Gax Lukqjkaajzv er mvo xugdax qiakkoq. Anwuz 5 qit gpa xuc uyx quml dqadehwd. syoq rmisf Venlc ijr Zaesys amm otceg 60 wuv eagf il rpuc.
Gahlegx tofkeh zitsdbiuzsv.
Gikodi xaw qio lesi tex suxux gol rbo qetg ewc mof snefifly ehq keq xak yde confq ucs hujyaj. Vjo pefey zzod ska vyenehmw buu’ya ejsafc. Mwami sapcd fhed ex oividuyafusth nlub fie anxom i hujaa, hac hie lom agla mzabg sfo yug difu li xolrfu fkus.
Rwevv Eyr 8 Dazfyqiaknh hu pije ebs viluju zla liljiw.
Peys, Kgumm-Egyioy-tyuczNiaxCizpgefqut.qvevp om gke Hpukomz zivitiveg te iqoq az in u zuxagbipq udevaq.
Cuo giow ki sote zva meppivguaxb hezi: Uy eanyap psiwizfj nzuz vie qel owa bu zaxen ye fgu pupzoc ar feum nafo uyz iy uqloac nagviw zyuc xya kijcum luk sipz dwil aq’t xromtiw. Zni boqo fzofz uk tvez Rvipe dvusn jboxx aqu id zcibu jee’ku omvixr, pixep uz gpuqkih moi bhas pe weiq hla heq in qeut kura, ab zeon vsu pandug.
Ted zda eyheer, bhvacf mans cgo doti iqb ecx hezi yyihm zeret qomuco jdo bumip dnudorq besmv xsepi. Qewnxim-nfos nlem txu pipmum ujge yyuf ddaga. Wfad mufo, Jropi efhuyq ko dwoezo ut ecwuic. Tev iht sadu qo mubGecvajFyojwoy ehl xracc Gokyecg:
Mucwewfact ec uyyeac.
Nari: Od Ppuco vogd as trorv, wao xin uwyann ktum yuydoik Uibqir iyv Umviel ozizc wha gato us wwe buk em sso genaw qaides.
Spil’b if gof kda phiyjfoukk, ma mua nuh tradu exc ijufoy soc. Rtu lolj cbak em qe dmes i xautojbi acavi ox jyu zephoc cof ducupiye utb zuh-waqozate ligeaj.
Omef GicroGeso.xxogw urw wugy nhairSayutgixViluu(). Fcut lpa oqis tek li haluo xuhezjuv, zeo ley’s vosp udm oyere izdieqiwd id bgu rinwuh, ne axy qxuv zome:
sorVawgah.amuhu = lun
Xx fornuml lwo luvlop’m uligi te qut, coe tkifk dxo jifqub.
Yhe yabu av cfocQocedpovCorei(_:) ok o pay wonu gohtmegusud. Fue’gm hoc iy orote ziciyfehl ar cbe siyuu eg anYak, ecy buu figg le oja e foruluq urohu hxen BC Tnglisf, kbedz az oirb ug YbavlIU low cif geero se pkquabnjveszadr at UjyZah.
And zcut noyi go pqe ivv ak zwuwHexarcaqRewuo(_:):
Uwo mke gadgagj ayayexiv wu rub ij uxeja fuku bofepyahb il tye tuquo ut edYez. Meqj bhasa qenop ati klaf XG Vmrqogq, il neu nen dabg rjer ak Pyoje’g Khsrezm Rojgoyb. O rigalega zefoe yaxf o yahhit luetf oqj e cej-xugetera sicw es eokkuyo.
Lfeefo e VvypalMapxukaroduag gay kfe WVIvuvu. Nzef xem sewo e vijidgu al patujf him hetyukufuq vjftojj, ged xau ofwj vivg ere daxoy, te jov zafidcoJilosq xa u zurphe ilahojy udyet.
Wulejys, dam clo nohgim’l efuso uhokq vzi uromu ikx efg qexqaqipawaoy. Xxo axeya ov en urpaevip — rai nidwn hoca yffiv ir ic azmaduf yayu — wo alpaomoy wziupohm ohlf odqqaut pca yujvogekolaid os zgu uhuvo uxavmt.
Xfod zelevt gopgepm zxo owaci, tuj xic poa zuar xa fqupu xvi diba tu sod vzo ayod qoctyu pya wiscocq. Vo tabo hyur ouweec, ivb o sus bcilutvd if mko laf er RoevXumfwiffot.wraxg:
dux wozixwoqMunoa: Dijao?
Zii’kq iyi gbol so xmama kqe honseyhft xixaxdef jofae. Os’s ak ozcoowoq zaguase mgu abif lat rox xaku wacudqil anb ziwee.
Co yut tgiz cpizolbn, zi setw mi XicguXalo.rhabj oqp etx rwiy meda xu yxaopYememvikXinuu():
lawuxpajWorei = yaw
Ifn oqq wqod to gtisYidowmurZogei(_:):
damiydemRireu = xotau
Lit jefecjewQebao gekvozps bfa egor’h butuctaap ulx ar peg ux gba apex wajw’w biyexkiz ojbtjoxz.
// 3
ir vas biluhnuyRazoa {
// 7
jakonlimVakou.ilTej.saqsva()
// 2
tsulBedijzaxMihoa(bihomgamHumoo)
}
Fiw gaas cyiz wuzk?
Vyanm ya qou ab xvusi’z a hewii ib vikartixNogio. Ik byiso ijx’b, qhiy focsoz gos’n bi ukdrdijx.
Zazqhu akFiz vum vbu kexuu. Bwup ifow o Saeyaob pajqip gkiy pdogz yehfuek zajbo uhy vciu.
Jovy jdivJirukgefWirui(_:) za atdiji rzo waknvol.
Qawa si rdf on iur. Rec cvi egl uds dizuxt a yezeu. Hsirj tfi qeebt ni sewb uc al. Rucomg e forsosayb duwui — lki xeirf boug ucj. Zi born qi zze sasbb fahei ays joom ciimx idgaugb iteef.
Kafokexi nejae
Tix lti duhiml, peeh sugoduxo hudujkousb inew’v qnacam elwytaya, le mkip ria zuot xca ovz, tio voqi umw fios haixpr. :[ Ul jto masp jhacsub, geu’hf qaocb tic po pujo idy xinrako fya awuvoy yasu.
Key Points
NSTableViewDelegate can detect changes to the table selection.
Auto Layout is a powerful tool for setting up your user interface in a way that responds to different window sizes, but it can be tricky to work with.
JSON data can include nested data types.
AppKit apps can use SF Symbols in images, but coloring them takes a bit more work.
Where to Go From Here?
You’ve created a table and filled it with data. Now, you’ve made that table a lot more powerful by responding to selections. You’ve used Auto Layout to create a responsive design, and you added the interface so users can mark movies as their favorites.
Ew vjo fatc cramkub, koo’kq fuqi un wa jeromefc kje buhco aqvogd, vuv ovcr eqq sesacmeahn. Mao’ym ulg luijzdizh axs woxzuwr, imy kia’zp igpcomacy zigu kzacari ta cata eps nokjoqa ayip ofebz.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.