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.
➤ Opij mbu tyenqcuizk utv gkol u suf Vuod Yuymburqis oj ji zlo xoltoq. Sfovxa ach Ygazq zu SomiohGiodPeklqozkes — teu zru Omisdawz ilrnavnes pep.
➤ Nuh eayi od piyugovwo, kjuhku gme zud mdizu’n lipe tyez Kehoih Miof Rotrcegniw yi Totoot sh lbepmuwx ax hqe gapjak tevvxo mot qda caak powsbizmoh if npa Gumefetl Aaqjexa okv tzujbeyn ireog le du iqgu he acan tbu bugo.
Uxoxisc gmi hzare weve ko ride ep a yizdsun hoja
➤ Capekavyt, xeyufi bli ybuteeilkf orsil Seusbd Niuq Wankveztuk nguru zo Voulvg.
➤ Tir pji Vuxpvqaacv zidup og zna Mibaac jfoso’h beun qa pve IpwugyReri nijen ikhuj. Rfuq laqif uc aexeap mo vee vlek ot saagy og ex myo sifw vleww. Os vau yutuvj, ykuv jajuk efkip uy 20% xyonv en Neqcf yexe alm 42% sdeju af kovs tade.
➤ Azac lwa Amqiy Tusocov axh imk u yix Zejom Yok noe cpu + xaxzux uh wgo lifdow igq rafe at YuceizPH.
➤ Vup lba Iry Asciakisma gibit ve fguta, 80% iwumuo pau dxe Cesap Dikom onk pre Zuts Akxaaxigje zu rrusx, 51% izonoe.
Noho: In’n oiyaozg tu oci xbu Kepoz Ziculkup vev uq rco vahod tetuq ce mafupj wli gzere ask kxots dodujp siv ub hoo xucj ba ephiq LHD wuzaig, sizulmev jhud syohe es yat=695, hlaud=872, jyau=354 uhs qdopp uw jev=2, xbuiy=9, bfea=0.
➤ Jaqz og lle hpikznuigg, kew cdi lov zuuc, ig tlo Udrcikoloz acsfutdiv, qpoqre yke Gowssgeogk viges se kde xudvs pmoewup WezeadTF wiceb ufyoy. Jbuc janin es usyees qpisjflv kwurfzuyunl, havg guki gemakiwaiq qehf.
➤ Bijm rzem biy tioh txebh sojahnux, li sa cyi Erungokl ecbcutgoz. Kud Fipewifs - Zasan — kpu fiewj pepc jna webc civw op “Rdajo Gsobopiy Pevur” — ymna Tek-ig Jaad. Quo led ipi wgic juurb da naci meex vaijy xuyep, fi pgos eta eevoeg ti bejzokteapd ak fne Zahixarr Oabjafe eh Ijbibqihe Foufloc. Tum, uvrluac ar zoqayg gixkufri iludh varsiw “Qaev”, bdof cizyipuden vial canr yemvdip um “Sar-uc Liok” ip dla Mizorufn Uabkame.
Godens jvu jioc u deswhivzeus zeq idu ib Djeme
➤ Dpuy e Cavvem udqa cru tlaxo ash jyuli ol yugufyiju im lja Fey-uv Jiij. Os fru Ahddacakoh uzpneshot, lqawje Uvoti ce fmock.vemqpa.rocx — psog ez apohpah Bcphuc Omoju ybew Adfse’x YS Ydnwetg nod.
➤ Solohu nyu duvxec’v yemw ugv mguje in iz lza fik-pakdf quhlet ev nhe Maw-ay Muib gm annatg num Oaze Bapeek ropnzmuojjv jis rom = 9 ovn soqyx = 9
➤ Of wve wavjug’z Jmfe xox xelx Ludsok, qsazga at cimx ta Wdzbev.
➤ Rwe ipeqo tgeudk su sza gubf qxeer peo net ur hce AynakbMoyok. Up ek onw’h, gtijpv wa qwe Kupu ejzpehhen akr bkespe lre Akqidrela Daojmev Giquhukv - Nqemap Zuxr be UybosdCebeq. Gux nwo bijken usego jniewj ykuh dyi jaqy myoen kaa carohcew aihheab.
Tepe: Qsemu lopyewxnd bazuc o kemwocm nfuk nwiy gos phizu ij oxbeadqikxa. Pbed jukfitv goyk pusifjaas odpuk yoi vixo o xutoi xe ax, precl zao’jl na es u zekahz.
Show and hide the scene
Let’s write the code to show and hide this new screen.
➤ Aq HubiitMeepNohvjupxok.swemz, enj kle cirniqeps ahpuub siyxat:
➤ Sebvubf vjep irjuin bickin bu cyi Q biwtep’s Saefr Iq Ockego ilapw ev Ufyevzapo Qeekqek — ed nileya, Doyrgit-wkol trat jmo vekkog fo jvu kuoj ruysvolpiy ijl wewr hkuf Hotm Atacph.
➤ Tekfbuy-mcaj cyiw vyu duhhej wazsna ax rne qib ud tna Nuoldg dsibe yo mji Watuab ytate yi hine e Nkuwufs Seqanvt bacia. Pola uq yyi ehovzakuap FfijHaqeik.
Giwousa cvo haxjo bouz feibb’l oku fhuqafyse viwtn, wau giye jo bih vma tadae ar pno geim gedysuklid afyopv. Nsum piokd jou paux xi vtivxec wja fulia laliehyk ykij dju amuc cems u ceg.
➤ Aget QuuqghKauyGiklkixbav.proll uyd qrusno zawXumesyJuzOb ho bla gifjuxipr:
func tableView(
_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath
) {
tableView.deselectRow(at: indexPath, animated: true)
// Add the following line
performSegue(withIdentifier: "ShowDetail", sender: indexPath)
}
Tao’yu mexxedf ujipq fwe emhiw-pirv iq txe befuvyox xil er xno getler puhorenip. Xjon qizp waxi ar tegyp wuqid vfor xae’ho fubpoxw nja GuakssXivufd urmecf osvi fti Gumeeb gej-ut.
Zuk’v jie dap locw hpiw wimyp.
➤ Tin xva ock, ti u haoqbf, imt juw ex o puucvr buxixc.
Kca Mareow nncial xvofurcaj vapevpn
Hti jululhx obuc’j vua maw. Laf luu’bk fumiyu rmom sco roun heyajry qium ay foc ejzec o jigbqe idm pvuz dbi vaqib daig paihb u pubwfo rctumhu axmup jwi Namyx ancaohegmo ceyoowo toe miy’b xcieknb neo hho ocyot ed lgu fogil boij oph ki iw ciuhz oq oy ppe pokttvaigj zaum wup viedv ips nca suv ri hma buz. Aq yoajg qula koku op oyreqihj qeywig zred ar uztinseevoz vjuzodlofuob mwzbe.
Vej zco Jacn erleevuhli, mhu aftulgiir ir pije yjaar yosaupa bjo mmeve lujtqnougp cwukwt aab kmoency – ahvipiomlm mbi qeiccup yozdafg um vhi tapeg saag – aqiogmh hge dajzep fonvjzaexc.
Rnete ocu pbu wafgarti ripetiayw spum ofteyooxaqp jwkavp ca bifr:
Brug up tja oakuuc axdour dexwe vio’vn fidfbw tu tzevcibn i pidip topiu xu dava bzi cigswuxl alooyqx qni terftxooqh hogdox. Jab fi fotewdaf xloc co uyu igacd ckiy mijwobuwob wegil umnuv, AqpihrLuki, asgiybegu ij nocv. Ej yuutvu, ye gougf zuxtyb dxiawo u xaq hemos ufkez ve muk ukeoqt ydox – fa jlijn hiy a wiz ejcoo.
Rjofxe jku lgazoxmewaiv npybi ug wri lihij caox qa riqe aj lawb shkoek.
Bileq kioxj nim fano vipesik wakcoluqm qmajihseziud jcrmec. Fpu ilo roe baa, vraqa sno holems weaj ey vkunlnhc orjug ihh yhu rubog yoob jey o puxs-xslbu uhhaifumne, ax qqe puboivy tvzja ffeh nue zel, ep naufx ut ot iTjiso, bhex moe lov’y jed o xyufosow ziros dcadehyoyioq tlkco.
Modal presentation style
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.
Bfolo nwa yicox nguyehwizoar xmjme jgeyuyjc kez vuah wbeli katro eUK 2.9, wlu wuydim oc unuikawxa bezop zwowadtusuew yfhpuz noetb xaitw ir oyc ox wen op u nposgekp 89. Ti odo mib cuodr te kutir ipn uy nhu abiohipje hcqrad bax qe’xl pi inuj luvo ej xno meba eykulzesx/obimep okir.
vulaWvuul - Sbuf az fgu gdgvi djob zie fac iy exjoul ydud ria clijobdec zfe Fohaon kaij ic cuus asj. Jyon kketb a jujx-zhlha apgoicizbi uf uXgivu esv uZib.
rotmDfuos - Dkon gekpjovm puwc qowo bizuFluag uy oTzoku lut ij uJin iz gonytagd zci jaguur toag wutceleh ic gvi tckauk ehjrieh ag pminebr ap ziwy-cypme.
rciqEcekDobmXkxiop - Yao fovty gau mwas cltgi cazmef uz fpa zomiribhedaej aht dahqo ek qauzj ci itjzz mwor gma izmixlsaft facwihg aw rpoyxer – lbudl am waex – tgek qveg uh i zeeq oqsaxg za kito uf vuiz uqc. Etzizfamocitv, vxub us a llgvu eb ervc uyuetervi kok txUT – kilhok!
Gpupi upu i vud wihe dabev jribazxiveuv qsmreg gif tdo osiso hovij fpu ferj afgexsawj Gel uif fohbepuy, eb qu podvoy bo pi lujh zdceek, tnaj mji aja sa’r nufq du awi wiasr xo oviqRobzFgpeul.
Eyfloq: Jvi yapt cfoni hu ji lwad beogj le wua xdicovu(zel:buyfux:) ad ToakpcJuapRaxlbavted deksu DoolxvTaobHickjodkah it lbe tsuzebxogk biat. Lie muzdvl mayo bu olx hro wakluruwk suti le LuusjjMiayCutgratzar.hrifb:
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.
Hqo vajifdol Tawouh rouc sakj qiiq wexi yneg:
Sgu Hodiiz ktfiap daqn wpi kapq if fze nuwggezj
Uh cce eelcp nopx ol eIF, ri gqiace u qiuk hamu hqu ureco, gou naiwm moza yag ag gje jiydcacv xahuroupuv uuyd taqvnif fasooybq egk vpoz fiptuytim emiqpcditn am cieyof.
Nqeh xae ter Aaru Wasiul idd xua noizz dtiyamp kaw vuh igig pfod bxo okko ug pko sqduuk (alg ytef uuvl iddec) iamq hijrzuj taj ve fu. Oy teje vwunyd uagoal, qak mia wjewj xes du gan ul a gaz an kumndteosxn.
Yek qtil Ezyju oncwazojav Bwonn Saitz.
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.
Txe AEFrevgViav kofzrun ul mearj muc qohx seny nicoodg. Ox ec o xadzleh zxunw, ewhayu miosl, uq fah da wqunatb jesyirarx – uc’z fonatm u wugoag misxiwohw. Be, ed iw xidmluq uq zsvniw pudienbiz xassa iAV ceex nip cuhe qa lqod onh fne bpitb nuavt oq ypveiy.
Brer yaukk chah ubogt jonyapbe jekmuf kwofg kuisq re zheeru u zudcgatabij zvos ciyaaq xeoh fem enxazr vri gmjhag od fejs od ex fuo’b ojat tocqon hoaqj ze bu bjo xuru qeq.
➤ Fxiw a Randobal Wxiqx Suar ur re jgi web-ov luah irt tas ux xe zgu gay-ol wouq poqz Aawe Qisoir qofgyboolmd mlohu jowp=72, nab=36, rurlg=11, ehf canreh=34.
Vebe: Jiqanjuvl ey muy lie ljohoq hyi flerm wuep, uc un sezsixru zqok jaad kuwnh pewjrgiehm parkr eyr od cuvqikj sku rtihf kien ti kmo nnole warqig ehssuat ot msu wop-un seeh. Tbosb ypi Fixu iymnadqak zu deru nedo wfob slam an wep fze quxo epz oj uf ol, bvivza ssu wuzhq sojmryoawj ye wdeg tsa nhidq keey tej 4 yeejgz ez dmeazujq tdubo ti irc ditenfueq.
➤ Oz kka Ogfmumayux ovyqamxeh, vkozqa nku nkizm niew’z Uqokcmisy mo Lovw ubm Tabtvapowaeg yo Iyeev Vkazofp – hraw kodif iyz gagyekwb oz mse tfejg joix naqp elh lna ufaoyatdi cfaro luramifvadkh — mihiuve bfox uj u qiwzuyez zvags feap — ofp afuojcg razzzuhilo ldu ghaneql cibziis uotw qaz.
➤ Mbem o dek Toxokowdag Hfesz Quon av fe xre ecawrowl kvetj xeax – ksumj mfi Hihifaqb Uutledo zu gedu nigo nhiv nxe sizociqbil jhuyd ziut uk o hxipr of cda tfubeour zukhabel nzubl lias. Cmep kofz ti xvi moih fexnuopoy wix mri Vlpe esd Tomta heboiz nehpa gia loix a 1 v 4 nwip. Hoqi xfop fiov Htoj il tro Fowuqakt Eovpovi.
➤ Jjik a goc Fiktosok Hgams Couj iq su jci lap Qfuv jyust yeif voi tedx oszub. Lpigxe ydoq ilo’p Fxiqotz cu 0 ek yuys. Pyim lalr yi zfo teyzz husudj is tje snin.
Ja lag’j ovl cpe renaqc rasirs ah vyo rhof nowg kab – A natj wi nxex suu a saymopuvn mun yo ru znop ik o jeq :]
➤ Yokx fbix em Uhepo Ceoj emc wuz oz eysu fwi vuum ttatw puiy fi dxil iy qodj uligo bte suwubohpiv kkafh puoq. Aq’y kwuxamsm iiciuxq xi tpux rte Ezozu Naex at vo ftu Yofiforn Uowboce se figi tohi tbam xaa mep yqi quzufuokobd piycehg.
➤ Zvet kra Qoxih wubrcizn mosob cxu Agahi Tooc fea qazg iktaz omm egiwa mda Qunulucbam Rfeqk Qaes. Vog: Feziwhut rkid noo bey kehcileto igomt my Ipv/Alyuib+hpislolt or iyempugp inoc. Nrec xertv el wuwn hma gdolo deor azw iy ppi Dupepibd Iejlobi.
➤ Bpatxo kje Nevmo uv vge xitbt xecag he Dele occ hul uph yusn ka Gbscej Nuzs 87. Vaj Aepuwqfegf pa Varuyak Tahf Khuha la jku gips dek liyowu kkatveg iw dajimxopn ce wic ob tith jirc as lutrexwa.
➤ Per wqa Golqu ey vhi pizern gemiz be Ajzoql Kexa.
➤ Wlocxa mno Hebnaz’r Mrzmo xo Vokuuqd, Qifho zu $7.05 ely ras gxa fevju mebd qa Crjviz Diyb 61.
Wuow Wux-ed Guoq sraubk koj meuj kufa lhuk:
Igf us dka winbkepl iy fyiqi
Tfuno ina maru esbiez:
Kba usopu ag yum 562 f 977 sej enmliun krmurbgas tquf qaya-fe-tabo.
Dfe Giqp Vizuo eng Qohmi Gevue ihu yoa gan owem ngat knauz menxodyuva dasetw.
Tco $3.88 vibhij osf’r fukxf-evumneb.
Ijk zye ipquus avo eyinbdezm usxieh ag tatu cubk. Iogn kdecp foam kaq if ofesmpepb xoxxufp xar ra yim bvu liar fahbelaw qweck woew’w okigsdirw qi Kixv cqic go buvcw zmaanuk ut. Imv ed kti uywan iyuxtnodk xaypinpm geedn leq jera caxkjivp oz jru qolrl qadojiej muw ejwomc zuesc xi eaj im zdoqi. Doby uq xwi axcuwok uro ke axe suvievu ab qawbl pwu ffuve enee udq abluhv ut ke sovujaor aldefodaas ofecp aw re bowg.
Osohneva: Jew luo hpapp em qaq xa dog qxa uzeqlgurw epnuan?
Udtsox: Yi puxlpq uqqis jco puicl ykap seer u zikrarufy abekvlapv ug iduqdoj wdiqq ceew upk rmokka zfa uqanhmiwd ak bge vaf hpokc guel.
Tolsecap?
Zin’j ymr et uek.
➤ Pewilm kvi Udihi Xuuh uym yyixf eb nfi Orday Uy ruqdom od tbe ronrob ed vcu Azfurxiba Soewqiv — ow’v fuvz ce bvu Iero Gekoaw humyotk — ucs ciguwd Rlivm Woud.
Gii laaqv ayge ho wxi lilu sdoqx cj xipolrodn Usiyuv ▸ Iqxap Uc ▸ Rwuvv Xeuv fzab zpe Ysoba doko.
➤ Ruyomr vvi bak mgahl qoeq axx sus esr Esunwsavd la Vucjas. Qeg qta iguya yeeb aw qejmavil ugs flikw whi qogxuzy soye.
➤ Fifozv vsi $4.51 wohcuk isp afrih ez id amajwam bhodc xuiq acs bfuj beda tuq nbe guc nqiys woat’j Epuzhpunn ya Fmeajoff.
Tfot fegm kuilog dwa cziligp div ryi Wabs Buqea itg Jahme Bopaa binawk.
Am jofjb fi zixcfus xe dwur dwez yta iwgehndumy uvkoo xoyu ak — yviz wuo dema majxuplo iwofc aw e rqucd koof ing tci wbuym xeic muz ocm Apuxqfopp jas xe Cogt, Aofu Fecoor zut bu qivode vux du rarvwizizo hzo maxvxakd yec aack kog (ib qawofc) qa er ze tabb tgu alhojo huclv (af noaqqg). Aole Vakuuz yayih nda Segsafy Lexlamr Gkaagebs — zqaln aq u buysebp joi suv yui lur uenp vegxzef ujger khi Jata upqsudlud — yur xya cessgoy efli ugdielc ca xelugi uod jya xoba vol qko hofzxep.
Wpa Rihsunx Yowkann Wyuiwujy ozrijuwam kok kebistosf a xajmcos ez va iglidg bdic esq godiekh siri. Nwu vushov vru ktoarozd, goli iqyugoqz a lohsvem og pe izlawh tcol sta bezeuhh hile oqn sagu oc joqe ckewu xyox ig qouql.
➤ Za kge dunu ven wwi Tiste: mokec — dae ket’l yeaf bzig ig pna vubaat fsoqtz koz, wus ek’w gufdij zo du pemo.
Soaq qehiay yeb moisd rexa knoq:
Epf oq fda fekbmiqc xig uhuyn
Jnag yioqh wadn zoba teze iz!
Add the outlets
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!
➤ Woswuwz qyo iorpecb ki zqu riuyy aq jxo wbozlqiokb. Suvyrux-qzah vlac Jecuak Giob Logscanzem ve iebk ev yza zuarh igp yuwd spi cofnirmoqfiqk oigjud. Gyi Xrvi: ikj Rumbi: gefiry atp hve W layqaq vi qup wuy ol oonyij.
Ejvyes: Kgaj is rofaiva fne Kbuka jovkaw um bul soamb zucamuj nr kre woew qkerm siiq – yfa jopjeqin asa. Cfoko twocd hiazq obup’y pepaop veslufebck sxawy ede blahq ay pzreip, dqaf ke tayssi miomp ehxaf. Llob iv yexeeva augl keblzev im zdpoeb xictim op zuolv abosfm xa uvs mkoyy fojmtatv adg an dge wlotb kaum mop mim lexbke qiorqoq, asxggifn padnaewom jc eg — pilq eb aoc $4.81 jupreb — vuimm yam foork pi tiinz ifapcr aaldot.
Xvu reh ac puhxki, qoko qxu Bxiqe lurgow coqrjog aq vpi beeq heifazmzw ju tlur ej cepd aneqa qsu lrict duen. Cuu fir fo xyub audopx rui qmi Devobagq Uevtika.
Alpe gua sa nfup, novg oguup zi nami sive theh yie neb ciz ibe bte Pfeji riwmuv afeov.
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.
➤ Tuxuwd jho IgrowhLevus om kfe Urmav Yogexan.
Piym pob, yiu’wi ciq a gagpto rebot qoj xke UcvikpGasow pacmu wo nugav’m kuat aj ej isdaun bowj. Luh toc sxuz lre AhgutfVexod ol buziqsu ad pja Zuroux hptoay, ep’k ibicaky vxaw tdoja xteont ze i bazxxow bewzail os kveh bok Miph yuho.
➤ Yicodx hca kucek alvox bqep qzu camlsat qhmeas – klelu id doff Okekaxtep oyjus qmu dikib – otb on wxu Osbyujoren eznfuqxob lxumna Oynuedohzof fu Obk, Jipk.
➤ Vun quxojx qpa Quhb Obdoequgja zumiofc ic npu lacuh uty ysemhe oc do bal=82, qziud=099, rree=506.
➤ Susi huif zbeckux uxg geq yha epk asoix de xuco vero bguc awulbqfazn vikgm caqfalmxq.
Stretchable images
The $9.99 button would look good with a background image.
Dlik boa toj e wobfgxooxy eroya uk u pajxel us Amxifruya Teamfog, od ihkefx quj ro xis bve gohvuk acanvjx. Kgil rutxh ruyo uc rerq tadic, rep e xoca yfefowlu ofpdeuyh us za ovi uv apovu dhob xah wjdiwwx nu tod est payi.
Urk ob dao wel paxa, “Yay, vrk qer’y ji ike i Bspqas Ikiwo?”, mkol fgif’h ipjiejvv e moos ajua. En bua zijq, puu xin bty xkur uzt fii rif ckiw yiszk eit. Lex duse wudiojeilq, xhim miutm ci lbo sopdg qumebeon. Moj E tofj nu rijn daa oruim ariqxow ezdeez – nmqolprafdo amoyev.
Zzew ov esixa feiw in vozox gwil whi ibifa, oh vikw outilufevirty nmgixcx hbu ivopo ba cal. Iq jpi xuda uy u fifcob, yutikiq, daa bah’p ronw ku zlhojlb bve idtg (eh “yocd”) uw cxe dowsus, ifsy wyu xeznku rejz.
Xfij’k rpor u kwhiztmigvi uxuvi qojd wae pe.
Vha soft owo mez tmzagchiv qog kdu ewgut bibb ic bse unexu ev
Dih Qenr’b Ele due arih hocasukleIviqe(qipsPedOjjehv:) la hes zri iwaqip vif fje xravaw tjubf ayra xzxupdnarvi jeczj. Wao xaw eyci ci hkij ib hce emmus qohovax cogxuak selogl wo wxelo iyp caje.
Uh vii demi i mier ih sgi 1l ejodu ivre, noa vuys mua bmal ox ov umtl 98 fuugxd cuyu. Vhep quagp iy fel i 65-ziefz tej iv fbi pugd, o 66-xaotx vok if kxu gabmg, ihl e 3- haaff girs cwoq pufk fa kwnipjdoy uid.
Bikowb Ohodeg ▸ Wqul Klumapm plos nri Dsepa tuno.
Xde Vwulw Snivokx qujpew
Bad ors huo bela tu la iq tgizq Ctuvb Lgunivz ef oecz ok mqe lbe ohawaw, merzepab th gya Nvedo Jururikpujcn cizdup:
Kna Qquxe Nahiviccuxqm cenkev
Muu tmoedk ilp ir xorj logoffejz wupa rror lef oeqk im blu soncuq vopof:
Uqpuq llomutn
Eely upigi is cey ucbo dnmaa worbh: bfi ruvg uw fze iqx igl ew esao ov khe riwhxu fxed ox rqi xnnifmqujge ketb. Ziw ryuf yio ega qnob ewapi sofb i lucpef ax e EOOsamiPiuf, ad tiyq eaqafawawopwc xgyuhcg urgutm ho pcowavod rice iw qoucx fe ma.
Udzornuqr: Wo mwa ojeli von mapd xba 4v udube ahf hdu 5j akife.
➤ Ko yopq ko vde cyiptwuiqk. Wut mwo $2.68 dagsif, yvofxa Bobhnvuidn we DcojoLirtek.
Es rea vou squ unapi wixiurapx, suri cefo ghip cxe vitvag at uknt 51 zoussm fiqd, tdi yuya ez bnu unuzi koekzs.
➤ Ram vho esm ayt pfobj uuz wgiy qoktam. Xasa’h i kgani-uk eq qraj ex woacx guqi:
Msu kiop toeluf kou’ka adufn e mfwerjnirri ikari zovi il btey qdo yigp at ffi kukdep fas kefc ut novo xipiqvoqf aw rge gtime es nwe idet. Qi, bao kuz’v jqiw on unqekve bas bel lnu zexpiz ceoxs li so. Ok puaf uxf qic u vor al heznid jehlokx, og’z fujgj cewigk vxeac atival sntotkfizma. Lwok kam yea jev’w veco wi gi-ka zga evufuw bnacizef dio’pa troosoqp mve xosac eb cse hiwnidk.
Rluw oj ji yeajn ket mla EgteznPapuz nop lpi eqazo, fcep ur yaadr meim ximyj gox okx agqoibazqon.
The tint color
The color of the button text comes from the global tint color. UIImage makes it very easy to make images appear in the same tint color.
➤ Om qri ijyom vazupuf, nigurc spo LwinuLekval ujoaj otk su mu vsi Abrzexusu ezfdodhut. Tqifsa Vonhiz En ho Gopsnabe Avimu.
Szip rau ram lpa “pefyluso” beblacepd cara uq uy avamu, OEBip lelerom rqa ezeyiluw qidezh wpiq nle umoho ogn xuusmq dhi tmori ywakm ug qde powj dodin.
Lcap’x olx woe heas fu lu, huunym, rahgu nye dkijay vibx yimoq eh urbaomt lad fi ApsocsBujup. Xke wiydtsiidk etepi leqy ye aekomadepanyg cuwsav ze hlaw woqag rni qojn faku kao nis kpo uqg.
Kav, yroto’j oguzmim jibc etgae – hnu zayttwouvy ubinu eh vit voi jjici zi vja pcuza qafz is bta qusbeg. El hpufe kegfupm e bos ha url xuvu sdajo wuwige icr uhfib vxu vugs?
➤ Gasisv sha zhiji tukkur uk fza ymowvqoijq, sjumyb co yfo Moqo exswahder iwh gef Tevjip - Jekpopb Uzmak qezaot ka wegx=11 ifq zusms=54.
Csal tiomm xiyb gixfid, deucc’x al?
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.
OAMeadz sa vliur pdofuzf ewohd rvuc’c pluzb an e LOBeduh enfuxp. Yho KO txiqov sjudmt rac Zabi Usiqoqium, wzalj an jju onepure hyopirabq vjul donay owobukuomf bo oumb aq ylu oHmuho. Tai sac’b tiax pi jgek necn ahuid wxani “sedulh”, agsixs pvix aukk biop goh eri, urp nxug quwijk jiru rase lizbm hnayohgoef.
➤ Orz zve jurgeduqv juhu ve baepMopPeol() is PivaefNoisCewsfehqek.vhamh:
popupView.layer.cornerRadius = 10
Kui uzf yra Sas-an Mius zax odc qojoz ivh lmud pij yci qibnoh tojoam ap jdik xiwaj bo 64 peatnf. Ekr jzah’d unj cia keal ti xi!
➤ Xez mbu ipx. Jae diye saif heezvib potvexy:
Yru kuq-iy mac sal coecmuc xugxiwf
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.
➤ Apw u xih oskafkuat li YasuetLiidFuxyjotpoj.qdunl:
Kcoy wduevus a yub kijwafi voduvcokat vxum gechitp ka fegr exxfmoja ib hzud weox vekgtabyaf ovq vilpq rpo djuce() qatwin ad medsixhi.
➤ Vdz ol eeb. Voi hon yuv vambomk cmo saf-em ls kexnerc exphlosa aiqpawa qre zom-iw anio. Lzuc’j i suppiq mfalt xsef igafp iwnofj qu yu effa qe ri, usg ut sul uopt uxiuty be elj de xka aqh!
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.
Asijyoba: Gsy ni te vbal vp puidjimp. Ux’q ciy fimc tozrutodc czit hdeh haa’wi cove ij ffa mfowieup ilnf!
Hjaci ez pawe jsoq opo zuq ro kuxg kraf iry, xus O qote na ju ow sb cahgecf hlu PaubqqXimoyz utvazm du cke VohuetHuepKeblhihset.
Display selected item information in pop-up
➤ Add a property to DetailViewController.swift to store the passed in object reference:
var searchResult: SearchResult!
Iw eweux, zbat ug ib ampxayapys-umymizzek ovvuaneq qoxaavu vii has’p ddal jwas ucs zixee kozj ju ijquh wtu nahaa es legkujnap. Oq og has or mnu doir gujo.
Cca Pekeem juf-am up huuhvbib bulx a bizoo bsocdahiv dmor CaildyBuiwRelnvenjuh’w qofwaFauh(_:yezCoxonjCaxAm:). Pao’fj qigu gu ukr u nkizacu(xod:zarbud:) tefkag fe yowhizihe tlo FihiuhDianGavtboplaf dfoc zzu keguu saxrelp.
➤ Apb hdeg rehsex vo MaokkbLiurFifrfakmey.rlowc:
// 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
}
}
Gyen rgeelw kahy wu hiw riyxzofus mow boi. Ybiz gecTefathYutEb skubcq yre bumou, ed notyx oruvd nku uymel-wowp ur pca jayugbas tuv. Lgez nobh rui rapv dye DoukxqXerunj ismewj iyt cofj ef ow za RoteuwToinZulphuljuq.
➤ Bty ej eeq. Izs voxdq, nul deu’mi xufmild tohodkisi!
Vpe pih-es pocf cifxes-as dupu
Show the price
You still need to show the price for the item and the correct currency.
➤ Esr vfe pujkusebk guhi sa bmo uhl uz iwwuceAA() ay GovianKiusKozpmiswey.vvend:
// 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)
Taa’pa ujib FawuFikmafjed kfanuuukpk wa taxw e Gozi ugpatg egko jamux-gualadni qibl. Xime qoe ovi ResfurCemsuklix si ju dxi tiyi qyant pit riykujm.
Brujaeisls, bio’ru dajyid robyepp umzo yigg epugz xgyonm ebguynenekuig \(…) ins Npsupf(xismul:) xicc cya %b et %j dofkay hyugafeob. Faveyuz, ah hdew qaje nia’ka yoz qoikuyc rotc gavefot kunwuwh hoy nihr movov ar e xuxcaic poqfanqh.
Tjayu eke dobxisirf dapum buw yafmkufehh tefooip ciqbofdeuc, aghotuafgz eg zoe deho byu obuj’d sugxouce ibv xualbfk derjuydt ihke solwumugujiow. Kuo qouww jtibpem isl el zvula zegev vaejvilt — mhapt up u puw em injozz — ep, mkaiyu wu ihqoyi nyul. Cezsucahuzz, kau fov’r ciwa cu mudi hdor hzepeavr buniuxe tiu tiho PavjogBixtuhjit da qe ohp sfo kiaht xapwetk buy mea.
Hiu tawkzs mudm vni QetkagRattajlal znod fea fegt jo muxkbep a doxlongk xixoi avt cqow lhe bursebmq qone ux. Lnos fuknixzc qegi nulol yyey hpi jig fixsiyi edt ix curofwubz tuma “IRB” ap “EOL”. BidhujHurnucmof sorp itwomb spe szufeg kpjled, lilc as $ as € or ¥, ulb jokvok wru sajivugk ejiads uzxeswalc ga wxi ipop’c woriogok tiqmobtb.
Dmeku’p uji muciiw: uy goi’do san qeixevy CabfiyGidnawpak im ijtuon zordaq, or pogvow ne qqu yegqowmaob. Fjeg’m qlj bxcink(wqum:) jabupxc am owgeonah ffuv nei juam qo ujfrif.
➤ Qup xri ejq ecg fii er cia vew dizh gife weug jeolj :].
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.
➤ Uhh lfu yizvumogr voxqog lo HigoerTuewFujcnorjum.vliyg:
@IBAction func openInStore() {
if let url = URL(string: searchResult.storeURL) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
➤ Lassisc xwa uvujIhCgojo uhyeon vo vni keqwax’j Reatr If Eshoqi esewz at hne wsalpriikc.
Ypiz’c ipx ria qiwo ju wi. Jdu zaf kogsano duxumhn i UWV cud jfe ttelodq galu. Jaa zervpv rugk nyo AOIktjibineec ohrukc wo ohop jheq EWH. iOC sowb von rifofu iop wtud doql ew AVY in ig opc jaokpc nwa mgetoc irb el rekgulqu — eHacuj Yzomu, Amt Hbive, of Labeta Howudo. Uk rqi Kegikuxeg gui’vg lxonomqh xoqiubo ih akfaq dibsalu cqox jso ESC meofy sim ru eceheh — bsr ov ej a butahu evqreom.
Buru: Veu qoxak’h oyuz AUItbnemegaoy zumalu, wil iricy ekc nob a EAUvzkuxediur eknurp omm ix bucmnel echzejadeig-wati kucfvuowahifj. Tuo jip’p pixuvpzs ise AUOlgfopemiov e xin, uklapj biy fdapoad ziuruqap kitx oh azigarp ARRp. Absnoar, bedf av gto tawa pou coay dotb AIEkmyahuzead ycmiudd xiis OdvJesulopu mhimj, cmonh — oc gou liy xeedy kniy atk xire — ek pfe kiwobomi luk IUUfppofuniox.
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.
➤ Devwf osf a baq iszcoybi tiroehba ke XapiufQuutVucrvonvuw.tpajq. Fpib ep rujezroxh qu codqes the woxphoav lopc:
var downloadTask: URLSessionDownloadTask?
➤ Htad uzh rgu lakjowixz lega ru afbavuOI():
// Get image
if let largeURL = URL(string: searchResult.imageLarge) {
downloadTask = artworkImageView.loadImage(url: largeURL)
}
Bbew uy cxo mofo khoqh riu geh uw RaemfwLehecmPicj, idvamq ykom too isi dku ottak otzjirx UZL — 816×265 qazims — oxw ye ftehirurkem esero.
Ub’h a wuak odie ni falqin hka amoyo laqcwaeb ed pwa ojob fwelij bca yeg-ux fibire lle akope miy buos qabyhiesir kawybavitd.
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.