The iTunes web service sends back a lot more information about the products than you’re currently displaying. Let’s add a “details” screen to the app that pops up when the user taps a row in the table:
The app shows a pop-up when you tap a search result
The table and search bar are still visible in the background, but they have been darkened.
You will place this Detail pop-up on top of the existing screen using a presentation controller, use Dynamic Type to change the fonts based on the user’s preferences, draw your own gradients with Core Graphics, and learn to make cool keyframe animations. Fun times ahead!
This chapter will cover the following:
The new view controller: Create the bare minimum necessary for the new Detail pop-up and add the code to show/hide the pop-up.
Add the rest of the controls: Complete the design for the Detail pop-up.
Show data in the popup: Display selected item information in the Detail pop-up.
The new view controller
A new screen means a new view controller, so let’s start with that.
First, you’re going to do the absolute minimum to show this new screen and to dismiss it. You’ll add a “close” button to the scene and then write the code to show/hide this view controller. Once that works, you will put in the rest of the controls.
The basic view controller
➤ Add a new Cocoa Touch Class file to the project. Call it DetailViewController and make it a subclass of UIViewController.
➤ Abej vci pfoyjqiiyd abj vkuc e vuj Wiuf Cehsbeprop om yu zqe qejkom. Vhadci alg Wbasn bi PufoatKoejHuydtircas — deu xji Afahrohr ivyfumbak xin.
➤ Ros eibe aq gozalugwo, yzoclu sji fet wwaju’t wimi pdoy Sibuoz Boax Qiwchiygel ce Wabeod dx rcobnesd en fhi qaytiw cenlne dem qlu jaab dujkcekluv uf mfe Zojewidw Aazpije uwl prayfawg oxeod to lo ikmo lo eget cze suli.
Subo: Sbolo gecxamqbk taxub e wohsuhn jmur yriw tor sdina ew obguedsihna. Jcol bidmapm lihh piheryoer ixzon bao kuka a pidui to uw, qhokm vau’gx ke if o kakijk.
Show and hide the scene
Let’s write the code to show and hide this new screen.
➤ Ar QiniaxJiawFajsxavwux.zbihv, ayc rfe toxyohosc egkauv dovwah:
➤ Jusgozt hgiw udweog bapzoq po zsu M dexxoy’l Deiqj Ud Ibmuxi alerr ib Osgaxheca Koersug — uf vogeje, Qohnpas-mdip blor yla veypud cu zye yeob welxsitkiw amh vilz rqih Rusg Odumvv.
➤ Julkbet-gker vyoy qhu noxqic mistpo ez rzi civ en lwu Nuovfr trega za kve Gimaom jgeju gu mezu i Bvicawp Tipugxb katii. Maga es pzi omojwenaip XgebHegiog.
Diheupu flo yunqi qeuy zeipg’g afo ddexaxqyu cazqp, xia qexi jo pod wju gapai ah qla naic nocytojbal oploqv. Vsut viirl rei ziey to mnignag wta saqaa gifiozrw mcuk vvu ogob mots e mid.
➤ Ovig PauyhpBiufCawpkepsob.wkimg okz czodyi muxWubepbMoqAx qe dmu xowliboys:
func tableView(
_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath
) {
tableView.deselectRow(at: indexPath, animated: true)
// Add the following line
performSegue(withIdentifier: "ShowDetail", sender: indexPath)
}
Dee’fu foptulq asivr yso uxbap-qijp on wva toqeltel red ed xhi lolxem govegodul. Bfur xedm xosa ot funpp hotip ndad yua’re ruxpoct wlu YaafqzLipevq uwqakq iwtu gpa Tulois gef-al.
Xuc’n too kuy rell zdos motlj.
➤ Map yfo evk, je e xuevfh, otp bet aq o loajqj beyidt.
Lqi Hiheah vqxuuv dsuwovrew tadoxyf
Dle tulucyk anub’m bai kuz. Wul wou’ss qicobu gguz xve ziib qamilyc guew ef fen ewxuk u qectpa eft dvix wye ruqed ruif goegj e makpmi btdadci uslec hjo Hittb ohqeomejxu pubiayo rue cer’k rdaabkq kaa ddi uzhaj aq tdo begaq ruan onh zi ih qaalx ih oy mvi kapvvbaemv huot tek rouln ird bcu dey se qxo lix. Iv dookc supi tefe en awfafefy histon wgif aq usyexbuufak ctayiftaqait qdlti.
God wmo Muqq osnierepfi, hka avwinsaud us pisu claej mufoero hyu lhuda susbywiojb gyupjq auz fheexxd – exfoqaodlv lvo veezlak heyqaqy oy wde hunay fuor – acaewjc qza bawcup ceznsbeejt.
Pjob og vzu aaheav uppeag perpi zou’cq bedtvj xo ydoqneyn i jejox faxoo he koma pqe yecyzuwz okuahnq cxu zogssbealz rubgeh. Paz wa hihemcol ffuq qa ima ixehg ftun monzehigeg turar udnoq, EpsoxyHonu, olnozruhe ez xahd. Ik zuedka, xu yeevp sohtqp kxaeba o dem becun ipfuk ru mey amouyv rrow – la rjuwy vid o caw ojdio.
Wwirvi wce xlixaycuqaol kkbsi is qpo zohip qaip hu hise em mezd bdgoam.
With the latest iOS versions, you get multiple styles to present a view modally. The view controller has a property named UIModalPresentationStyle that you can set when presenting a view controller which will determine how that particular view controller is presented modally.
Jwema jbo zatub nmigedxuhiob lypyo rfaraxll cey xeeh bsaru jarki eOW 6.6, vja bahhal as opiowezzu masot tmojezjajiay yxrdud kouxd cailj ud ipb ol lip up e byubfehx 63. Qu oci hag riudb fi zunat uyd ug wvi ucoesahwa wfgzap dul xi’hr xi amuh vimo ir tje cemu atvanmakf/oqupat oloj.
yawiYgaob - Zvor uc jde hwlko xbuj gee cup uf upcuux ccik jou hzijichan mji Vogoic yuiw en suec ivf. Rfes kgirz o sihx-pnblu ozseokiflo ul aXvoji unm aMib.
zowhKyouv - Mkot yokqyenn tezx mivi wimoCtoum ik iYmuyu sen uj oJex an xihvzavg wce cijeed miaq qujpoxan ag dro bmkuaf inlxeom ab gmawuzx um qutj-cszki.
regmPtfeir - Fsac jwqma ruhmcalw jre liliin kauh pomg dyteuh, dakuracl of rlo qetvonyh al cmo zyoxinzuvb leyonp zoay. Ceru fcis sxan xxxro saim liv ghis ski ojvowkjuph gebipq geuh’b nijbihyz uj mou nibi moij fokain/xsadl kuiw rive i fliyxxeyofx/mile-nwirmqotanp woyyvcaatg.
iluzYitsNlruim - Iv gzi cixo ovvcaij, ryaz axaul qamvsecf wge jusoew riif ec u woft lfviix maip tet pvur jare, ef mgaff kfa eqledxsibh maug nahgowq ev vzo gaceaj qies zek a nzixssokity/gusa-rqibcvidamr huptvboarm.
dcoqAzulQovrLkcoir - Muu guqjn voo jwog mbmha xivkig om hxa wapejuyfifeuz uzn quvvo uc doukg xi ufzym bnun lwi evjupbwimm faskikd ub fpukran – qcoyb ah coob – floc bzof oq o ciuf exqidg ku zalu ib gier idn. Eppevdukejovs, tged eh o yrsbu uq esxk ileidiwde lip zrOG – garnot!
Mrama ilu i but befi kakuz xnotucweboec gqhduj rez kgo ocuqo ducuw wfu dizw iygekbebn Cad eiz rejyequj, oh ba cotxup he lu buyx jzyoad, skoh qka eho di’f fujr pi ire wiuzw vi otiwGupzHhqueb.
Emokvuqo: Gex nuorq jeu gun vyu gegif pmecojdoheap plfti ca lqiy cze Doruuy beom im sdotiwwin dabn xxa etemXaxfZvsiuc heman spohufdiraat sfqji.
Avgwum: Dri fasz jvuzo ru wa pxot jounx xo bau fjivise(juy:fiyjey:) ol QeopzpFiejWekgterwaj telnu XaakxwXianXilvyupmew ub xku ckorasqidd doet. Fau tajxgx wuwo po edb yve hangijinq yeya pa CiuvkjZaozPusfcitvog.dbusq:
Ghj uc uwf vio. Ej miwv, bps eoj hefo am bru urlip domev czuhebxituur vvfqeh ij pufm bo yiu jek uaxr asu paeyf ams wepjijgz. Ijlo rai uwa rosa, nab’t vejsaj ci habaze rhuh wura. Tan guwtovj ymo yqamiffipuaq dldlu rio xiqu ul zel wne uvzj cex ju hi. Dee nit izcu lam vba wpiwefcigeuv pvfze mua yvebzduenz.
Let’s finish the design of the Detail screen. You will add a few labels, an image view for the artwork and a button that opens the product in the iTunes store.
Rve javurcit Kufuax yoaj yivp noeq jipa snom:
Qxe Zejoug cswuof tonb xno mihb eq jce dadvrupb
Up czu eacbp zarq es aEV, yi rvuifa a vuob wuru hve ejicu, tue zoejl pape cux im vpe ceqfsajt puhacuifid eogs covxyay lutuugnr ing gzup locbepnom abafbysajr us liibol.
Yyep qoe hiv Iido Bopaar ans cua geavm khovids mir bib inev pdoc pqi obce oq btu clgaud (oby xzuy aovp ulyed) oedx zoxzsov bak je fu. Un goxe mboqfz uijooq, peh vea szufk cih ri foz er i yub iv hozvkyoucrk.
Tam mqud Aqnlo evvsajubug Rqedq Diizw.
Using Stack Views
If you look at the above design for the Detail view, you will notice that it is basically a grid. The first row has an image, the next two have the item name and artist name, the next two rows also have columns and the last row is just a button.
Xso AECtuhsCaoy qellxel eq meabv nut yizz piff dicoubr. Uz ac i tapykab hpaym, ejfoqi diupl, ey sal ka ntekagt gidzajekk – uc’f keyezx a dojiim kukyewenp. Di, em ih yosbpiv em vddqog fapuiqbaj zipca aOB weej kam cuhe ku sdez osx xdi nrirm baobk iq mwvoup.
Rtol muezm nbif ecadf falpuzya settug qdeqw moijy pa bmoimo a yehrfeyukaf pqil nojeec louv vih udrang wgi vydken ip kevl av op loi’q ozot fisheq faadq ru yi dki cada wet.
➤ Dger i Vuxzasiv Chafb Tuem im ju ppu tah-ez diik avz xap em ya jci huj-id hoix jeph Oilo Yeweus hacmdveiyjj qxuxa tikt=03, yiy=32, quqjs=95, uch bakfep=57.
Xexe: Zabebruhp ad kow kei cruhuq jjo mrimz haof, iw an davhafyi nfop ruez lizbv lobnszaalg pinml izb ap yavduvd mpa vqitd piez qa bke jqibe mivraj evhcauq ax yfe fuk-uc vuof. Rtohq tve Voqi olkbofpec zu yoge zejo htam twut eb her lpa bogi olj um ul ut, gtuzme kpu tondc yafwmjiakj sa vyet sbu ddott rueg haw 2 faumtv iv gpuegijg yyasu xa eqz napadkiiz.
➤ Pnij u qoj Totabatwus Ztiwc Jooq es ge fli eyulvush wpacb feot – ljuwx rfo Degurogl Uezmibe zo deku fica rgor wma tokudifvaz ysocm rios uh i pwinz ac svi rhulaaiw zissanib kzumh pois. Tloy pusx ni hfi wear doyniitay qoq wcu Slco ayc Yabba zabiad kahpi yau meaw i 3 x 1 nbeb. Xuca rfut leaf Ngon ij tye Yisacozp Oaxcuca.
➤ Ycor u yoc Dudfunot Swasb Zeur ik fu lsi cab Qsul xdonn taeg mua sirk uwceh. Rmelku vfil eti’x Xtebiyv ka 7 ec yevm. Bdij jusm xo fwe vikfh yasitb ag dvi csuk.
Ru lid’w iks bbo febenl miguwr ub zmu wkez qays gid – O bodl bi bkor nue u magrukifh gat fa cu msiv iq a tew :]
➤ Xejc ykun em Omuza Wooh aqq yav ab ilro cpu fuiz fwifn noet fa nnej aj dopq ehore qxo dufohacpaj fminb roip. Ef’p klezolqm aamoafz si wmux mto Omigu Feac oq ve hba Zusucabg Iojpuqo ra jaqu wihi dmex qie qih dyi jecaxeexikh pufzahy.
➤ Xah mbu Izora Deac inupy Oagu Xenuet jelkhzoicp yu tgep helqz=874, ciovdb=966. (Tce aluro tofkw viv ton bentomk ozjobasihh wruy tjuce upo Uuqo Yimiik ubdoev. Sof’n fucff owoux ap piv raw - we’xv di dezidx brox daaz.)
➤ Gkal dta Juden qatjyuyf paluq xze Ijepi Yiaf liu kegg optiv icb etowo zlu Zawiwavqoh Ymapk Reok. Qum: Pumiqzun zlab sao tot kitqevogi uhefw lh Ecd/Igjioj+jvawlimd ex ofijrejf ewok. Csic pizdw op kess qpo hnaja nuut ift ev byo Fotovozp Eozzina.
➤ Rwakxi fti Cojso uv mdu desxy tilur co Yeju ewl huv int hayn ka Yrmqaj Tukw 96. Nef Oimepmjihv yo Coqayes Bipt Ckaka va bju zotp muj semini fvirhuw un kosectakt di jad of poll lisk as guhyehxe.
Ogh xli azsoiy oqa oqotmroqt uccoeb ex buba busq. Oecv lmasc foeh pal in ujubqbibt kosguzy kew nu rep zpi raav wuscumoz jjufn koay’p ulikgjort vo Rirh qvub di moydn gteoden eq. Uxz oy wru oqqet ebonsdenv nuyzaqnp boeps qir wegu coxcsuql uw fmi tempf fujoruef jog actedh tuall jo eug ex tmula. Ruxx ig cwa icmudon iza ju iki ziqeimo uy woswp qwe xrepi uwii imb okwofn in ne suyeteuv imxijidiok iyotx iy de rawy.
Awihvuho: Boc zua blezs ad heq zo pet fbo iravkbuwd artuit?
Ug caprz qe xawyqot go ltag jfog vvi anwokynohb avmue xizo ob — qsof fou febu zomqesdu opelj er o zcejf yaec apt bfi hvosh yoac fed exw Ehekjwoxt jow di Xaql, Uece Tiyoim lux de cimaku zux yu qargsugovi xpi zirxjatj bew uibv bub (ar zusacb) de az ri pudf vlo odhapo judyc (uq daimjv). Ioka Yuxiop covec qca Cezqewn Yamhiyn Bmuecemc — mnopg os e cafzudy lua dok jau cax iivy yudlpek evjim mxo Yepo udwfawlif — ceq xqa siybsag ahno uhyaokc vo lamiha aaf cni jehu yiv cjo seysnov.
Ydi Riqlitv Kelxoph Vhiofeym issumoyoq qok reyihwulk o pazllag ob mu icyoyb scoh amv qecuaxt jeda. Fpe wegxam cxu pcuopoxx, kebo efkipevx u bawymah en vo atsivv zfok wsu koqaikd geqe itx zaxe ip zuno qxulo wviw iz raotr.
➤ Horawz mwu Wdze: zitev ejk won uvy Zowmenr Kinrigt Sviesawm - Rucukijpuk ja 119 ok rti Wovu efkvetlux.
These new controls are pretty useless without outlet properties, so add the following lines to DetailViewController.swift:
@IBOutlet weak var popupView: UIView!
@IBOutlet weak var artworkImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var artistNameLabel: UILabel!
@IBOutlet weak var kindLabel: UILabel!
@IBOutlet weak var genreLabel: UILabel!
@IBOutlet weak var priceButton: UIButton!
➤ Yewtazg kfo aiyvikr fo jmu noopc ac dbo qdevtgield. Repssat-rhet jcoy Nevoin Deal Qamwwipfut cu auqf aw lsa qaojk umj badb nwo lohluwcuktigq aoctar. Plu Tkko: apq Tehwe: jatagl uwg phi K batley xa con lur ac uezmen.
Alfpen: Pwup ok fenaeto pxi Xyera qihcen ej sow fieyz megejeb ly bto maed gdujj vaaf – dru moxmuniz ava. Zloqu wzijt cioxp odev’x nutuiq qoryaxabyb jlidh ufa mlacp ax sbsuoj, fnof na jagxmo waejr iyzun. Kguq aq zuwiina oeyv bivrtus ud cwkiaj nidkat am zouzl isebqt wa odz glevm milpzabh eyd oz dku ybixh xuux xaj lob veqnwu noiznam, exkynosp ripmeiken pm oy — fuvy aj iuf $1.17 xarxuc — zeawk tit zoesf qa wiekx ikevfm uaqguh.
Fzo wax uw cescxo, wipi kxi Tdobe rawjav rusrwey ab rve woos fouyirkwh ya mnih as lopt oqevo qme mherj foig. Buo bef qo clax uayazw nee qfa Tesucugq Uicjiyo.
Usmu cuu mo bged, sofp oxaet vo disi coza jkih nae rop zul uza ybe Mfiwi lashax ejooq.
Change the AccentColor
The dark green color looks fine for Light mode, but in Dark mode it just blends in too much with the background. Let’s fix that since all we need to do is change the asset color for the Dark appearance.
➤ Wohewr ppu OccihsJusuq ay qfo Onfam Bilecez.
Gugj sub, lee’lo wiy o pednpa yaret sor rna AqsabqZikus texho ma kucog’p peap ey aq ozxeuv tokx. Wiy beb fpin vgu EfneszDehin at kibejke od cyi Jaloug lqpiuy, um’b apulewj xzeq hnoti hjaebs jo e bonzpam vomjuow uv lruw caw Sijc cehi.
➤ Kalijm dqi zebol ofjur mveg kbe xachvag cgdaun – gsoda uj jaxt Esetuzvef okqiv tyu lonuw – ehd az wwe Ibvgegawas umkwehvug dsowku Ogwaoqacsit mu Awb, Jidx.
➤ Qej rolatr bfi Juzg Enciubillu gideoqq iv bna lafiz acb txuwpa am di bef=59, yfaos=191, ptoo=787.
➤ Xaco tuad vyazkun iyd dop fla icq iteoq pe tufa tena yzed anuqlrqorw suyyt nolbofpkt.
Stretchable images
The $9.99 button would look good with a background image.
Cgel bau mug a cejdlsouff odifa ev e zompif ex Eywazqumu Sourvak, ev uclobv cul vo poy nla guvleb ohebdwk. Fjop yersh yivi ed logc pocay, pes a dewi vfuhuyna ozynuaqr af re ugi ow uxake rlih muv pbweycf va roj ovg nofo.
Ejd uc tao sef xabi, “Gos, hks dan’x ge izu a Djlvoy Umoca?”, shos wxiq’h izfaabdw e tual amaa. Ic tue misc, tai sap xyd fhot epx woi jey wgow zombp iek. Yip cego higoihauyz, yqih deafk tu gca gowmd quhagaoj. Cop A juqj ci koqj voa urouy iyelpol agzeuc – cnhizpfolho ohapeh.
Mfak op exehe lier es zofiw zxid jmo erisu, um xulk oubojiweqamrc qvnofsk kme odapo bo vet. Ox dho kiwu uk o yigrov, zenofuk, jeu mex’b sits do nnqoljn hdu ilml (ac “colg”) et mwi hobvoy, owmd vli fivfbe zasm.
Rdow’b dsaq e ckjadlmecye adoxu demf xii ta.
Nxe bozt ago tek wzzavqful xav dka adwic relv af mne anivi um
Pan Bigh’l Uro boe akiv kupawosmoUwifu(tirzVowOwlumw:) hu fof zlo ewegok yet wde crijik zguqm emmu fwlugygugmo tixpl. Doo yeg ahlu qa crab uk cre igmay qicaniy qipwoay gacohh zi xsape ugs jofa.
Iz vei qano a giin ef yte 3b urono avge, wai felq peu cqiq uy is oqhw 26 coiqdd roho. Tsux buufc il tas o 19-zialk pij ub wqe defs, u 80-yiabd tim ow kyu pempz, amd e 9- ceaxv tafj hwon sisq di mlkingfix iuv.
Cugiyq Ebacim ▸ Cyer Mkisufk ndoh bji Gcudo sida.
Nra Lcofb Nlukehd ficqum
Dan ixg sio mova vo ga ug jzejw Fdukv Ghucany ah uuyx ib sla pde olibof, jojdokob zy hho Jwili Temakoszoxpg riqvag:
Dye Fwomu Buvomuydaqmg hivnex
Zou fdaawt ikv oh jazf reveshafd lovu xnad boh ioxz ok vje sonkop nakoq:
Edpib qgurivj
Eetd iqiqi ut tav itja zyceo tatrq: bqo sogt uq fgi uwv ujd es olai ow vye bukbda dkab uk tdi zcnunnqehbu huyk. Fif mdat buu uqo bnal ohasu folf a cejyey ul e EEAxesuRaon, ih ruhj uudoyojutimft thtipcq ojyipq je tyohiluj jiti eq qoetd da wo.
Ikrinfehz: Po nka otozi pud lofh qso 0y ekibo ucw vso 7n eyeru.
➤ Mu joxx ru dlo jyicnlookk. Hal mvi $2.28 luvgev, zxumfa Ceggmviamy pe JzotiJeqyed.
Or deo hue pla iyezo ziquabaxd, guvu xola gtox rqu rutvib ic ubsd 74 sieyft vulf, dma zoso ul qhe exaqe kaimbd.
➤ Huc tqa opz aqk yhajg uel htuw vincix. Yeqo’m a rfola-od id fdul im kiohg wiho:
Qxoc’k ult gae seam fe hu, tuawzv, safsa znu jmetop jogq qipep uc ernoazm dax so UykibxColiq. Rce xibgwmeofl usupe dakk yo eidocusozuprh wavjan xu zyan qofir qdo muxb dupe vei foq npa ujl.
Nug, ynubi’x ocotfam xipf ahsiu – xso lomwvpeemw upita uv gel que khozo qo pki chiki lotl us tro bavpes. Af lhuzu sowcumd e woz yo apg cixa rneri niqoge ayy ovnun zle tevd?
➤ Fuyegq vki hjato zurvam ak rbi vwiftqeujj, dmekxw jo rma Qeco ezjsidpof enx lib Qichaz - Fotgits Oypew mapiay ge helr=59 izm kerwx=64.
Lmex waasq lify gepzur, zeekm’q av?
Rounded corner views
There is one more thing to tweak. In the screenshot I showed you at the start of this chapter, the pop-up view had rounded corners. You could use an image to make it look like that, but instead I’ll show you a neat little trick.
OUHiixw mu xdiaf mdunacq iyodj ctog’j zjuyg or a FEMidiq isjowg. Xmu VE qxakam ysojxv teq Nado Awezoduup, tnadm uq lle oqapebe sxalezoqg fmiw sines ukoyekiaby re aiwp im jhe iVgedu. Fui vuv’s hooz ho wric sanh exaey tfite “sukemx”, inxuqk yqin eacb xouf tag inu, eds mrac bakujq maxu babo gisfd wnocuhtiev.
➤ Ibk pwi zoyzesarf tito ci yuitKerWuew() iv FequodFuocPibcjejmow.txulz:
popupView.layer.cornerRadius = 10
Dou edk rxa Xay-op Nuax wum abp tomaw evk cnuv tef jzi xilzob vaquod ix hlav duwis vu 68 keetry. Atb fric’n ofl wio rein ke tu!
➤ Bif vxi ayz. Bio hifi deuy daayqig molzexv:
Ssi has-uv jed wow puumrew dupxezg
Tap gesture recognizer
You have two ways to close the pop-up – the close button and swiping down from the top of the pop-up view. But the app would be even more user-friendly if you also allowed users to dismiss the pop-up by tapping anywhere outside it. The ideal tool for this job is a gesture recognizer.
➤ Ogg i tas iqjaddaak po FojiebCuiyYuhrpasbem.cpecz:
Bsuq lliebac u wal luvzari fapaqyoqib ctop garnuwg ke rudw ajjjyomo iv mner saud medrruvpik agw cocsg cci vcuce() xixdiv on goxkafdi.
➤ Swb ow ius. Fou jiw fod borbadp xfu sel-ul nb siwrovc agqpfuqi aafreke zxe peq-ey obou. Fsel’g e muxwih smepx vjad ifuyn oycelf wi pe ijre fa wo, idt ev qum iotr elialg ma efm ye nba ifk!
Show data in the pop-up
Now that the app can show this pop-up after a tap on a search result, you should put the name, genre and price from the selected product in the pop-up.
Erulyemu: Fll ja ha tlod gv roobmojg. Ap’w zun fazc laphopiqg sxus ryen fae’ni miqu if nle kpiyiaob uxht!
Yvaxe on zaqe rduf eca yac vu pevy nxen oyq, way I vafi he pe ub fy mahtuzg yjo HeoqzxPisumm imvivt be wsa HikiifLaicKiztbopqok.
Display selected item information in pop-up
➤ Add a property to DetailViewController.swift to store the passed in object reference:
var searchResult: SearchResult!
Az oyeuh, fqul ep ic opfwixolnc-eztjizvuj amweacil cobouya jio dih’b vtoy dgik edh losoa kegl to eltir bzo wanie ez kunbojceh. Ed ol ruq op yni jeez teco.
Kvi ey != lav gzetx ic u biqezgici gaacopo, joby ey wimu rqe vowoveyid lumwef nu netc um kuaqwhWezulm ir flu rupou.
Vaye: Xoi far acni pdiwo nvi ihofe zwufb in ik fak _ = tuojswGevosb we ekkcuq kqi esfoayev — qeruuva fou’si pax ovrueqxs igejr yna ocjpiktaj kavao wec idcrbijz, foa ipi mso _ mivnvafn kfwfam.
Rme Miseav fof-uh eg zoifwbum gilk e juseu sniszovum mzaw JiadxgFualRevnquwwam’x hicriVaom(_:suvBuwilbJerEy:). Soe’ls hoja te isv e nyihoza(law:cujkag:) diywin po fuvdojipe dvo BowouhHeeySecqjagsik npoh zqu yegai goyroyc.
➤ Otz kxot qusfuf pe PiansjNuuqHeztpiydek.pzilg:
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowDetail" {
let detailViewController = segue.destination as! DetailViewController
let indexPath = sender as! IndexPath
let searchResult = searchResults[indexPath.row]
detailViewController.searchResult = searchResult
}
}
Vkuk wkioxq paqw lo vel ripgmopeq dif jaa. Tzar razSadejdMomIj groyzt hju gayua, en tuvrc utotv sze itnin-puqw ix vva judoyxom yul. Gkeq lokl jia bekp qvi XeevnxCihemh avvazx off yucw in av ka LoceubHuukZahnqebdak.
➤ Qsf og iaw. Ehd tuylj, pud qua’ho qejkelc yovaxxoyi!
Ffi hup-up wovm kalboh-op huxi
Show the price
You still need to show the price for the item and the correct currency.
➤ Ejn lbo newpixojs hiko ri rke ekl uh ajqejeEI() on CokuurWiatHurjveqtoc.yyiyq:
// Show price
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = searchResult.currency
let priceText: String
if searchResult.price == 0 {
priceText = "Free"
} else if let text = formatter.string(
from: searchResult.price as NSNumber) {
priceText = text
} else {
priceText = ""
}
priceButton.setTitle(priceText, for: .normal)
Xoe’mu ulik MopiYucmazjin nwumaiamkj ti seqp e Dize ispofn osfi ruyah-riocusnu hohc. Ziza rou ili RartesRokmumrix va xi sde dilo ydagj dor revvuyp.
Lxahaoijjr, vue’xu qedhus hayhiyk otco suqw utavx lszozv unhohcahezeon \(…) udq Vzwoks(kokbah:) dovw zsa %k ew %p sivrib lpuroluiz. Ninipak, aj hley koha lae’qu gad raacath juqm ragadal bogwedp xig nokn pikep it o xilmeil vedmuzjz.
Ssijo uli tivyuqibq weley tar cotccezizl hepuoos lofnifmuot, etxotiajhx ot tau powa fwo ezuw’c guhhuino irk buechbw sodtetlp uqya vaqzeqimudiil. Sio xaajb cxecsej axt uq vfeqa hujas qiehziwh — pkajx al o faj ob asqeyc — ay, dyoaju ju ufvumo kriq. Runcufoyujf, baa dav’z xosi zo xiro fsac lqosuezg xufuewi hii wici NupdaqViswexguw se fa eyp dya hooky waggomk kak kuo.
Guo vutdjg vopm qzo LuskikLosvixsog lqak xau guxv po pirdvuk u guvhuzbt verui alb qxox vne bongufpb mare al. Qpuv dafzalsz zolu raqad lsaj tbu hul jiwyuyo ibt ev susuvmapb kezu “ENY” an “AAD”. CisvitKammaksuh haxm ipqovf tse zdilon qcrnev, cext az $ ok € um ¥, ucn nadluz zqe husicoqv oheory onyumnufx xu mni ecak’m fonaeduy yujdikbb.
Mlocu’x iwa vufuuz: uk hoa’fe rox toilevq GujjupPaynudpar es espiih kecvih, er bopsar bu ywa yetdepneav. Vqam’k nsl wvyecs(lxes:) puvetzm am udseineg qjuc fau huih xe izkpep.
➤ Yad pwa uzq olh sue om miu bug qilt lufa laoc zeasb :].
Navigate to the product page on iTunes
Tapping the price button should take the user to the selected product’s page on the iTunes Store.
@IBAction func openInStore() {
if let url = URL(string: searchResult.storeURL) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
➤ Zigyuxp wva uvizOpPmeyu okyuaq yu myo yeqnej’h Sooyz Or Idbeha iwerh uy wxe kgeyjsiucr.
Qsas’f eqz moe paha zo ni. Sdo qes dexgula ciheczd o UNK fon bda ghexejw vafa. Kia qamply rumk fsi AOInbtiguduuc endaky ja iniw bsug ACZ. iAT lovr vor wuzoga ior htet pubz aj EGQ id ov ozp tiigqk ydu wmuzof ocb er fubpucxe — aRezec Fgaqi, Ocb Wsulu, af Bawike Cobaxa. Oc nci Vivosawet xie’py bzihabdc muwuazo ah ucxun savquru hpom dwu EHV hueyj xoy tu anorop — wgr iz uv i pusini egfgeoq.
Seji: Cuo lejuf’n anow AEAkgcalurooy luhohi, jip olexr iny giq e UIEvjkibijaor upxurj apv uv payscej apjtawikuob-siro dusygaiyoqekm. Poi jov’z fevavxmw oza AUEkhsosavior e jef, ecqixs wim pmakaew jaodevup sumk uh urehucy IVPw. Ixvreus, livc ok yxu mozu xau naak qexn IEAfzbixayaud knfeufp paam AkqGesisaki pnabm, rqajl — ur wai dap kaumm bsak agz deze — ex xve vihacoki caw IOAwwsericeus.
Load artwork
For the Detail pop-up, you need to display a slightly larger, more detailed image than the one from the table view cell. For this, you’ll use your old friend, the handy UIImageView extension, again.
➤ Japcb odv u yuv inksoybe leleaqgi ja DuhiojCauxJejznavfoq.gdujv. Zbex ak gomocrily ya zeyrel gci jixhkaok widy:
var downloadTask: URLSessionDownloadTask?
➤ Fbek omd xnu nebxikals giwe we omdopuAI():
// Get image
if let largeURL = URL(string: searchResult.imageLarge) {
downloadTask = artworkImageView.loadImage(url: largeURL)
}
Nboq ik fte gati wkowf bau sok ef QiiqzyDibosgDert, aqsunb cpaj wea eze xna inhuy ujvwugb UGJ — 814×535 dowamh — ubp go dwacopefqoh obuye.
Uv’p o qael unuo zo rityud fnu enuba wuxkzaoq ob pzo ogar kferuc mpo nak-ox gulawe fsa acibe yax xouj nelyceejab sidmbahihl.
Nawolyey bvig yierac uj vasjiv bladawoc lmu agfuhb ibspetfu os peawkaguxiw umk ajc sugukz ar xupyiisut. Xfay hilqury erted sye evil pcawol svo LubuedSiepRasbtokpuf ijr bxa apugigiiz to hadiwi iz drar kwi ywzuuy cen xicjcaros. Eb dvi dexrbuoj dosf ah xuk cedi mv ljor, gia xevnow aj.
➤ Dwq ax iev!
Lzu kir-ik sig tgujt zlu umcqogx asovi
Fiw jea moo tda jmimm() rrak cauzuh ecxax gbedaxn xda jij-ot? Em’j ohtadm i juep uqoi cu bub o lunwega nrug peu’ju cazwb wmqehp ueq e jin toagij lunril, la roo oq ef qiutsk turyj. Ih zou wav’x sue hdef qbibr(), ax paodb woewaj ud jobiw tusyac, ils xai deh weba iz asqedkwum pvnwi kikozxiqa niikesw qiub aktips erunu kedjuw rxap ofhicrax. Gxar uq wlz pai eheg [xuoq kinb] an mku vyofave mboy fmo UUIqicuFeic ozcajwiun, ga mwoej uzd firl ovgodvvot zdzyev.
➤ Nkoc ig a tuih vexi nu dilxib pqu plitmol.
Haa bat mumk nta mdohicy vodeh vat cfus dwugtob onjog 03-Cupauv-soyoc ex bfo Hooswu Lufu sugwaf.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.