RHED SHI: Mirë se vini në shih seminar CS50 - Hyrje në IOS. Ju faleminderit të gjithëve për të ardhur. Unë shpresoj se ju jeni vetëm aq i ngacmuar si unë jam gati IOS. Vitin e kaluar, mora CS50 si një i paedukuar mjaft, dhe unë në thelb mësuar iOS për tim Projekti final. Dhe kjo ishte mjaft - mirë, kjo nuk ishte e lehtë, por ka shumë mbështetje tutorials online. Dhe unë me të vërtetë shpresoj se me këtë seminar, unë do të ju jap djema një kokë fillojë në zhvillimin IOS Pra, sa i përket zhvillimit IOS, ka dy gjëra kryesore që doni të mbuluar sot. Së pari, gjuha - gjuha do të jetë në Objektivi-C. Ne në të vërtetë do të dëgjoni diçka me të vërtetë emocionuese. Pra, ju mund të bashkohet me gjithë Apple komunitetit të zhvilluesve dhe për të ndërtuar disa Apps të vërtetë të tmerrshëm. Gjithashtu, iOS 7 është e bukur, me shpresë, për disa prej jush. Por kjo është e diskutueshme, unë e di. Dhe kryesisht, ajo që unë dua të bëj është udhëzues ju nëpërmjet Objektivi-C, dhe gjithashtu Xcode, e cila është e integruar mjedis zhvillimi që ju do të jetë duke punuar në për IOS. Dhe kështu, vetëm një fjalë në Objektivi-C. Në thelb, kjo është e saktë njëjtë si C, por me shumë gjëra të tjera. Dhe kështu, më shumë në mënyrë rigoroze, kjo është në fakt një super-set e C. Pra, çdo gjë që ju mund të bëjë në C tani, e cila është në thelb të doja pset 0 deri 6, ju mund të bëjë në Objektivi-C. Pra, mos të ndjehen të frikësuar në lidhje me këtë re Gjuha që ju do të jeni për të mësuar. Ju keni mbuluar tashmë një shumë prej tij, sepse ju keni bërë gjithë këtë të kaluar të c semestër, me përjashtim tani ju jeni do që të ketë shumë më tepër për të punuar me të. Dhe unë jam vetëm do të çojë ju nëpërmjet një disa shembuj të nxjerrë në pah disa nga dallimet kryesore që kam gjetur ishin të të vërtetë e rëndësishme kur kam mësuar Objektivi-C vitin e kaluar. E pra në fakt, kështu, pika tjera është, Objektivi-C është, padyshim, object-oriented. Dhe ne do të diskutuar pak për atë që do të thotë më vonë. Në thelb, kjo është si se si keni punuar me structs në këtë pset kaluar, me nyjet dhe të tjera të ngjashme gjëra të tilla si se. Me përjashtim, në Objektivi-C, çdo gjë është e një objekt, dhe ju jeni do të jetë duke kaluar rreth pointers të objekteve në vend se vetë vlerat. Pra, kjo është vetëm diçka e rëndësishme për të mbajtur në mend. Pra, pse nuk kemi filluar me disa dallimet në sintaksë ndërmjet C dhe Objektivi-C? Unë dua të theksoj # përfshijnë, ju e di, io.h standarde në C dhe C + +, me version objektiv-C që i cili është # importit, dhe pastaj një lloj header fotografi. Në këtë rast, do të ishte UIKit, ju e dini, çaj UIKit.h. Ajo gjithashtu mund të jetë, ju e dini, MKMapview për ju të zvogëlojë MKMapview.h në qoftë se ju doni për të bërë, si, një hartë brenda app. Gjëra të ngjashme si kjo. Pra, gjëja e rëndësishme është të përfshijë ka ndryshuar tani për të importuar. Por ideja ende mbetet. Ju do të jeni të importuar një lloj i header dosjen në programin tuaj. Unë gjithashtu dua të theksojë dallimin mes printf dhe NSLog. Megjithatë, siç kemi thënë më parë, Objektivi-C është një super-grup të rreptë e C, që do të thotë se ekziston printf në Objektivi-C, too. Por, shumica e njerëzve nuk e përdorin atë. Shumica e njerëzve përdorin këtë NSLog sepse atë ju jep një pullë kohë, dhe ne do të shohim ajo në veprim vonë. Por, kjo është në përgjithësi një më e dobishme mënyrë për të shtypura nga variablave. Dhe unë gjithashtu dua të theksoj se NSLog merr në vetëm njëjtë Vlerat placeholder si printf ka - kështu% d është për një int, % F është për një noton. Megjithatë, unë dua të theksoj kjo një shumë e fundit - NSLog% në shenjë - që është një placeholder për një objekt. Dhe siç thashë më parë, merret Objektivi-C shumë e shumë kryesisht në objekte, dhe kështu që kjo do të vijë në përdorim, kur ju dëshironi të shtypura jashtë, ndoshta, ndoshta një NSArray, ose NSDictionary, ose një NSString. Pra, gjithashtu, vini re se, në NSLog tonë Deklarata, ne kemi një në shenjë para e kuotimit - që është për të ditur se vargjet, tani, në Objektivi-C janë objekte. Ata nuk janë më të mundshëm thjesht char. Ata janë objekte dhe janë trajtohet si e tillë. Pra, është e vërtetë e rëndësishme që kur ju përdorni NSLog ajo merr në një NS string, që do të thotë se ju do të keni për të përfshirë një AT para tuaj thonjza. Dhe kjo është arsyeja pse ju shihni, këtu, në të gjitha Funksioni im bën thirrje për këtë NSLog, unë kanë një AT para kuotat, madje edhe pse% d dhe% f-së janë gjithë të njëjtën gjë nga C. Çdo pyetje deri më tani? Unë do të përpiqemi për të shkuar nëpër këtë shpejt në mënyrë që ne mund të kemi më shumë kohë për të punuar me Xcode dhe Objektivi-C, kështu që se ju djema mund të merrni më shumë njohur me të. Tjetra, unë dua të theksoj diçka konceptualisht e rëndësishme. Pra, në C, gjërat më janë funksione. Ne bëjmë një telefonatë funksion. Ne deklarojmë funksione në këtë mënyrë, me kthimi lloji i parë, atëherë Emri funksion, kllapa, dhe më pas pavarësisht argumenteve dhe llojin e këto argumente ne duam për të kaluar in Dhe Objektivi-C, sepse çdo gjë është një objekt ose klasë - kështu klasë dhe objekti janë dy terma që janë kryesisht sinonim me njëri-tjetrin, kështu që unë mund të përdorin ato në mënyrë të këmbyeshme gjatë gjithë seminarit. Por, ju do të shihni se ne kemi metoda në Objektivi-C në vend se funksionon. Dhe metodat përkasin objekteve. Pra ashtu si, ndoshta të për shembull, nyje - Lloji tonë [e padëgjueshme] Nyja nga pset 6 ose 5 - ne kemi fjalën, pronës, ose tregues tjetër nyje. Metodat janë thjesht funksione brenda i një lloj strukture. Pra, në këtë rast, struktura do të ishte objekt, dhe pastaj metodë është diçka që i takon një objekt. Dhe kjo është se si ju do të deklarojë, lloj, një metodë. Ju do të fillojë me, përsëri, kthimi lloj - kështu që, unë u përpoq për të ngjyra kodin fjalët kyçe këtu në mënyrë që ju djema mund të shohin, të paktën, formatimit Ngjashmëritë midis funksionit deklaratat dhe deklaratat metodë. Pra, ju filloni me, ju e dini, një kthim lloj - në këtë rast, është një grup, apo një akrep NSArray - dhe pastaj ju e keni këtë metodë. Dhe pastaj, çfarë është interesante këtu është se në vend të kllapa, ne kanë këto colons. Dhe pastaj, përballë argumenteve tona, ne vënë, përsëri, në kllapa lloji e argumentit tonë. Pra, tani unë jam duke u përpjekur për të bërë krahasim në mes, ju e dini, n dhe Numri, për shkak se ata janë të dy Ints si. Dhe pastaj, një tjetër është një lloj NSUInteger. Dhe pastaj, me Objektivi-C, kur ju duan të kenë argumente të shumta në klauzolë tuaj metodë, ju, lloj, ndarë ato lloj si kjo - Unë nuk jam i sigurt se si për të përshkruar atë, por ky është një shembull i mirë se si ju mund të ketë argumente të shumta në atje. Ju mund, sigurisht, vetëm krejtësisht injorojë zorrës së trashë andArray NSArray array qoftë se keni kërkuar vetëm një metodë që merr në një argumenti. Po, pyetje. Audienca: A janë të dy NSUInteger dhe Argumentet NSArray që mund të merren në brenda NSArray? RHED SHI: Po. Pra, më lejoni të shpjegoj. Pra, po. Pra, pyetja ishte e janë NSUInteger dhe NSArray * llojet e argumenteve, dhe kjo është e saktë. Pra, ju gjithmonë doni të specifikojë se çfarë lloji i argumentit tuaj është. Dhe këtu, unë jam duke u përpjekur të prezantoj për disa të sintaksës dhe vocab të Objektivi-C, kështu që ata janë të llojeve aktuale që ju do të merret me të. Dhe si ju do të njoftim, vargjeve nuk janë më, lloj, gjëra të thjeshta parantezë. Ata janë objekte. Edhe pse, në qoftë se ne do të shkojmë në të ardhshëm rrëshqitje, ne mund të shohim se ne mund hard-code një NSArray në Objektivi-C me thjesht një simbol në para kllapa. Unë nuk jam, në të vërtetë, mjaft të sigurt nëse I syntactically vështirë-koduar një rrjet saktë për versionin C, por kjo është menduar të jetë në një grup C. Pra, kjo është se si ju do, ju e dini, ndoshta përdorin funksionet ose metoda që ne të krijuar më parë. E drejtë? Pra, kjo është ajo ku ne të deklarojë tonë funksioni dhe mënyra jonë. Dhe tani ne duam të përdorin ato në programi ynë, dhe ky është se si ne do ta bëjmë atë. Pra, në C, ju do të keni, ju e dini, ndoshta, një bool b, dhe keni vendosur atë në barabartë me funksionin, dhe pastaj ju të kalojë në argumentet. Në Objektivi-C, kjo është goxha e shumë të njëjtën gjë. Ju keni NSArray * my_array, dhe është e do të barabartë - tani, vetëm Dallimi këtu është kjo gjë e objekt, të cilën unë e kam theksuar në të verdhë, dhe si ju mund të shihni, në C, ka asnjë fjalë tjetër të verdhë. Dhe kjo sepse metodat përkasin me një objekt të caktuar. Pra, kjo është arsyeja pse unë duhet të ketë një objekt se, lloj, e quan këtë metodë në numri zero, dhe pastaj NSArray a, b, c, d. Çdo pyetje mbi këtë? Ne do të shohim këto koncepte në veprim shumë shpejt kur të shkojmë në një demo. OK. Tani, unë dua të flas pak për pak kohë rreth Xcode 5, e cila është mjedis të integruar të zhvillimit që ju do të punojnë me të. Unë e di shumë prej jush, ose disa nga ju, nuk kanë Macs, e cila është një problem sepse Xcode nuk është në dispozicion për Windows dhe PC. Mos më pyesni pse, por ndoshta - yeah, e korporatave. Çfarëdo. Por gjithsesi, kështu që, unë kërkoj falje në qoftë se disa nga ju keni për të shkarkuar disa lloj makinë virtuale për Mac në menyre per te drejtuar Xcode 5. Por kjo është një fjalë e zgjuar mjaft software për të përdorur. Dhe kështu, para se të pikiatë në çdo lloj e demo, unë vetëm dua të ju tregojnë se një fotografia e asaj Xcode duket si në tuaj dritare, dhe pastaj edhe të flasim për çfarë është kjo hapësirë ​​e tërë. Pra, kjo është lloj si të mësuarit se si të përdorin Microsoft Word, përveç ju doni të njihen me të gjitha gjëra të ndryshme që po ndodh këtu. Pra, së pari, unë dua të ju pikë në shiritin e veglave në krye. Ju do të shihni se, në krye, ju do të keni emrin e file - ose, në fakt, emri i projektit tuaj dhe pastaj emrin tuaj fotografi. Të marrë parasysh të luajnë dhe butonat e ndaluar. Ata janë ato që ju do të jenë të përdorur për të drejtuar app tuaj në imitues - imitues iOS. Kjo automatikisht vjen me Xcode 5, kështu që ju nuk duhet të shqetësohen për shkarkimit disa lloj imitues. Ju vetëm shtypni luajnë dhe atëherë ajo shkon app tuaj. Dhe ju mund të luajnë rreth me ju, dhe ju do të shihni se si funksionon më vonë. Dhe pastaj, në qendër, sigurisht, është ku të gjithë kodin tuaj të bukur është do të shkojnë. Dhe pastaj, në anën e majtë, ju do të kanë këtë, lloj, dosje - navigacion - dhe pastaj, ju do të shihni se, së bashku me ikonën dosje, ka një bandë e ikonave të tjera atje që do të jetë e dobishme më vonë. Dhe pastaj, në anën e djathtë është një dobi fushë ku ju mund të punoni me disa prej objekteve dhe të përcaktojë, ju e di, se çfarë duhet të jetë ngjyra, çfarë font teksti duhet të jetë, e të tjera. Edhe pse, çdo gjë që ju bëni në fushën e shërbimeve, ju mund të të bërë në kodin si. Dhe kështu, unë do të shkojnë përmes dy shembuj të përdorimit, thjesht, nuk ka kod në të gjithë - ose Kodi shumë minimale - vargje të gjithë kodin, vetëm në mënyrë që ju djema e di se çfarë mund dhe nuk mund të bëjë në Xcode dhe Objektivi-C. Dhe pastaj, në fund, deri në fund, ju keni zonën debug. Pra, ju nuk keni për të kandiduar gdb, e të tjera, në programet tuaja. Kjo automatikisht e bën këtë për ju. Dhe ju gjithashtu mund të shkruar gjëra në këtë zonë. Pra, në të vërtetë, më vonë, ne do të shkojnë nëpër mario.c, në qoftë se ju djema ende e mbani mend që, në Xcode. Kështu që duhet të jetë kënaqësi. Dhe pastaj, vetëm për të sjellë atë përsëri në Objektivi-C, unë dua të theksoj atë që ju mund të bëni me të nëse deklarata. Pra, ju e dini, sepse Objektivi-C është një superset e C, çdo gjë që ju bëni është, fjalë për fjalë, e njëjtë si C. Ju vetëm kanë dallime të vogla. Pra, ju do të vëreni formularin për një rast Deklarata është ende e njëjtë - ju keni në qoftë se, dhe atëherë ju keni me kllapa një kusht brenda, ajo dhe pastaj formatimin e teksteve kaçurrel për çdo gjë që duan të bëjnë brenda aty. Megjithatë, kam kërkuar për të vënë këtë rrëshqitje up këtu, thjesht për të ilustruar se, sepse ne jemi që kanë të bëjnë me objekte tani, ne do të duhet të përdorin këto gjëra quajtur si, është i barabartë me varg, e cila është, rastesisht, një metodë të një string ose një objekt NSString. Pra, fjala, në këtë rast, është një NSString objekt, dhe ka një metodë të quajtur është barabartë me string, dhe pastaj ne jemi duke kaluar në një varg të vështirë të koduar për të parë nëse ato janë të barabarta me njëri tjetrin. Çdo pyetje deri më tani? OK. Dhe, unë dua të shkoj për një për deklaratë gjithashtu. Kështu, për shembull, në qoftë se kemi dashur të lak mbi gjatësinë e vargut në C, ky duhet të jenë të njohura për ju. Dhe, në Objektivi-C, unë dua të nxjerrë në pah këtë, lloj, Metoda e quajtur numërimin. E pra, në të vërtetë, le të më vetëm të marrë që i mbështesin. Count është një metodë e vektorit. Megjithatë, kjo është një mënyrë më specifike pronë e array, e cila është arsyeja pse ju mund të përdorni dot simbol. Por unë nuk dua të merrni në shumë të kjo stuff konceptual, unë vetëm dua për të treguar se si gjërat do të duken si në Objektivi-C kundrejt C. Dhe gjithashtu, unë dua të theksoj se edhe pse unë kam qenë duke përdorur NSUInteger para së gjithash-të mi në Objektivi-C, ju gjithashtu mund të përdorni int, int sepse është krejtësisht të vlefshme në Objektivi-C, gjithashtu. Po? Audienca: A është vetëm stilistike, ose është - RHED SHI: Po. Pra, si ju do të shihni - kështu, pyetja ishte se vetëm një çështje e stilistike. Siç do të shihni, unë kam një, lloj, yll i asterisk gjë poshtë në pjesën e poshtme, dhe Lidhje që ju merr në një Stack overflow formë, ku dikush shpjegon dallimi në mes të një int në NSInteger dhe një NSUInteger. Dhe kështu, ju mund të lexoni për këtë më vonë. Këto slides do të jetë, natyrisht, në dispozicion për ju. Le të shohim. OK, awesome. Pra, kjo është e përfshirë edhe në rrëshqitje sepse Mendova se kjo ishte një e madhe faqe interneti që ju fut tek Objektivi-C sintaksës. Pra, në të vërtetë, pse nuk kemi të shkojë në Chrome dhe shikoni këtë faqe interneti? E drejta. Pra, ajo që unë dua të ju tregojnë se djema këtu është kjo fytyrë. Pra, kjo është, lloj, do të jetë ajo ju do të jeni për të parë brenda çdo Xcode fotografi. Në fakt, pse nuk e kemi marrë vetëm një moment për të, lloj, të marrë këtë in Pra, ky libër - kjo është objekti që ne jemi që kanë të bëjnë me të. Dhe pastaj, ajo padyshim do të jetë trashëguar nga ndonjë objekt tjetër, por ju nuk duhet të shqetësohen për këtë. Dhe pastaj, ai, ndoshta, ka disa variabla anëtare. Gjëja më e rëndësishme që unë dua të ju tregojnë se është metoda e shkallës, këtu. Pra, metoda e shkallës janë pėrcaktuara nga ky shenjën minus. Dhe pastaj, si ju do të vini re, ne jemi tashmë të filluar për të parë paradigmë për deklarimin metodë, e drejtë? Lloji i kthimit, emri metoda,, dhe atëherë llojin e argumentit, dhe atëherë emri i argumentit. Dhe kjo shenjë minus do të thotë se kjo është një Metoda e shkallës, që do të thotë se këto metoda janë në dispozicion vetëm për objekte që janë instantiated. Për kontrast, se metodat me një plus nënshkruajë para tyre janë klasë metodat, që do të thotë se ju mund të telefononi këto metoda, edhe në qoftë se ju nuk keni një objekt krijuar ende. Pra, për një shembull të qartë, NSString është një klasë. Dhe ju mund të telefononi, për shembull, Metodat e klasit mbi NSString - aktuale, si, fjala NSString. Megjithatë, në mënyrë që të përdorin këto metodat, ju në të vërtetë nevojë për të krijuar një varg. Për shembull, NSString string yll është e barabartë me në simbolin e kuotimit, përshëndetje botë. Dhe pastaj, ju mund të përdorni këto metoda - Metodat e shkallës së - në atë përshëndetje varg botërore. Pra, kjo është diferenca midis Metodat e shkallës dhe metodat e klasës. Dhe, ne vetëm mbuluar këtë pjesë. Prona të paluajtshme janë një tjetër gjë që janë të brenda objekteve, në thelb. Dhe ju të deklarojë me ne fjalen e pronës. Ju keni këto opsione, këtu, se unë do të shpjegoj më vonë, kur ne do të shkojmë në një demo. Po? Hi. Audienca: A mund të zoom në, ju lutem? RHED SHI: Oh yes. Më vjen keq. Audienca: Ju faleminderit. RHED SHI: Kjo duhet të jetë shumë më mirë. Audienca: Po. Falemnderit. RHED SHI: Po, ju lutem kujtoj mua, nëse Unë harroni të zmadhuar ose zvogëluar zoom jashtë. Pra, kjo është e gjitha që kam kërkuar për të ju tregojnë për - ee, kjo është një shumë - për këtë faqe interneti. Pra, le të kthehemi në slides tanë. Në fakt, tani le të marrin një moment të zhyten në një demo. Pra, ne do të fillojë me një projekt i ri Xcode. Pra, në qoftë se ju do të hapur deri Xcode në të gjitha makina tuaj, ajo duhet të keni disa faqe ku ai thotë se, si, ose të hapur up një projekt ekzistues ose të një të ri projektit, dhe ju duhet klikoni një projekt të ri. Dhe pastaj, ajo duhet të marrë ju në këtë ekran. Po? Audienca: Në qoftë se ne nuk kemi një Mac, nuk kemi vetëm lloj qetësohuni? RHED SHI: Ose shikojë me dikë, po. Po. Ju mund të dridhura, too. OK. Pra, ajo që ne jemi duke shkuar për të bërë të parë, tani, është, në të vërtetë, ne jemi duke shkuar për të bërë një aplikim të vetëm pamje. Pra, në qoftë se ju do të vini re, ajo është e madhe rreth Xcode dhe mbështetje për Apple zhvilluesit është se ju keni një shumë të templates për të punuar me të tashmë. Ju mund, për shembull, të bëjë një Aplikimi mjeshtër-detaje. Ju mund të bëni një lojë - dhe në të vërtetë, unë nuk do të shkojnë në lojëra, sepse lojrat janë një histori të ndryshme për zhvillimin IOS. Dhe ata janë lloj i ndarë, kështu që unë nuk do të shkoj në atë. Pastaj, ju keni faqe me bazë aplikimet. Ju keni një aplikim tab - kështu pëlqen, për shembull, Banka e Amerikës ndoshta ka, si, një app skeda. Është ato ku keni butonat në fund. Dhe pastaj, ju keni një lojë sprite Kit. Ose ju mund të punoni nga e para, të cilat është ajo që ne do të bëjmë më vonë. Por le të, së pari, të fillojë me një aplikim të vetëm pamje. Më pas, ajo do të kërkojë për një emrin e produktit, dhe ne mund të bëjmë vetëm provë. Emri Organizata - kështu, emri organizatë, Kompania Identifikuesi - ato janë të rëndësishme në qoftë se ju do të jeni për të vënë app tuaj në dyqan app. Për më tepër, kodi juaj do të të kandidojë absolutisht mirë pa këtë. Kjo do të jetë e rëndësishme në qoftë se ju doni - kështu që, në vetvete, si, vënë app tuaj mbi telefon apo diçka tuaj, dhe test it out, ju e dini, në jetën e vërtetë - kjo do të jetë e rëndësishme. Kjo zakonisht ka tendencë të jenë të lidhur me një lloj të llogarisë zhvilluesi me Apple. Dhe kështu, unë e di, ndoshta, shumë jush nuk do të ketë ndonjë llogari zhvilluesi. Unë e di se universiteti ka një të tillë. Unë mendoj se CS ka një të tillë. Por, ju mund të email mua dhe unë do të përpiqemi të kuptoj se për ju. Por tani, unë kam vënë vetëm në disa gjëra placeholder këtu. Dhe ju mund të, natyrisht, këtu, zgjidhni nëse ju dëshironi që ajo të jetë vetëm në iPhone, në iPad, ose të dyja - aplikim universal. Pra, tani për tani, le të bëjmë universale, vetëm për të parë të dy anët e platformës. Le të shohim. Pra, tani, unë jam duke shkuar për të shpëtuar kjo në disa lloj dosje. Nuk ka rëndësi se ku - ju gjithmonë mund të lëvizin atë më vonë. Dhe, tani, ne jemi sjellë për projektin tonë Xcode. Unë nuk do të shqetësohen për të gjithë këtë. Unë do të sugjeroja të mos prekur asnjë nga kjo, nëse nuk e dini saktësisht se çfarë ju jeni duke bërë. Pra, e gjithë kjo, vetëm injorojnë për pjesën më të madhe. Ju nuk do të duhet për të prekur atë, dhe në qoftë se ju bëni ju rrëmujë disa gjëra këtu, ajo merr pak i ndërlikuar. Pra, pse nuk e shohim në fotografi në majtas side ne navigator tonë. Këtu, ne kemi AppDelegate.h. Ne kemi AppDelegate.m Pra, si ju do njoftim, ne kemi header fotografi, të cilat përfundojë në dot h, dhe ne kemi Zbatimi - në fakt, më lejoni të zoom in OK. Më lejoni të zoom in E drejta, kështu që ju keni header fotografi dhe ju keni fotografi të zbatimit. Në fakt - OK. Kjo është pak i çuditshëm, por të kesh durim me mua. Më pas, sepse ne kemi zgjedhur një pamje të vetme aplikimit, ne do të jetë duke punuar me storyboard. Pra, storyboard është diçka që Apple ka dalë me të vërtetë të ndihmuar zhvilluesve të shpejt prototip kërkesat e tyre. Pra, kjo është ajo ku ju mund të krijojë një app pa shkruar një linjë të vetme të kodit. Megjithatë, në kërkesën tonë të vetëm pamje, ne bëjmë, natyrisht, kanë një paraqesin për pikëpamjen tonë, e cila është një pikëpamje kontrollues. Pra, ne kemi header dhe fotografi zbatimin, këtu. Dhe, unë jam duke shkuar për zmadhim jashtë tani sepse ne do të duhet të punojnë në storyboard. Pra, këtu është vështrimi ynë. Nëse ne, thjesht, të drejtuar app tani, nuk ka shumë emocionuese ndodh. Pra, ju do të shihni këtë ekran të bardhë. OK? Dhe, në fushën e shërbimeve tona, ne mund të shtoni një bandë e gjëra të ndryshme për të. Pra, kur ju jeni që kanë të bëjnë me ekranet në iOS, kontrollorët pamje janë objekte që encapsulate, lloj, pikëpamjet tuaja. Pra, një pamje kontrollues gjithmonë ka një pronë të quajtur pamje. Dhe kjo pikëpamje, në mënyrë tipike, përmban, ju e dini, se çfarë duan të shohin në një ekran. Pra, mirë, le të vetëm të fillojë me vendosjen, ndoshta, ndoshta një etiketë. Pra, le të vënë një etiketë mbi atje - ngjit atë në mes. Pra, tani që unë kam klikuar mbi etiketë, unë mund të shkojnë në inspektorit të pronave dhe të fillojnë ndryshimin e vlerës së saj. Le të thërrasë atë CS50 Ngjyrat. Dhe, unë gjithashtu mund të ndryshojë font. Pra, në vend të bërë sistem, i cili është parazgjedhur, ne mund të bëjmë një të porosi. Ne mund të ndryshojë - ju e dini, UltraLight, bëjnë të 32. Dhe pastaj, ne mund të bëjë kuti tona më të mëdha. Audienca: A mendoni se ju mund të zoom në vetëm pak më shumë, ndoshta? RHED SHI: Po? OK. Audienca: Vetëm trokitje e lehtë atë? RHED SHI: Le të shohim. E bën këtë punë? Audienca: Vetëm të kalojë Xcode? RHED SHI: Sigurisht. OK. Awesome. Audienca: Etiketa nën? Emërtim? RHED SHI: Çfarë është ajo? Audienca: Çfarë drop-down ishte etiketë nën? RHED SHI: Pra, pyetja ishte, çfarë drop-down ishte etiketë nën? Duhet, thjesht, të jetë nën këtu. Unë mendoj se është një gjë e fuqi e tretë. Por zakonisht, kjo është default - Unë jam vetëm duke shkuar poshtë këtu derisa të gjej një emërtim. Po. Deri tani, ne kemi emërtimin tonë. Le të qendrës atë. Dhe Xcode na jep udhëzime për qendërzim objekte. Pra, tani le të kandidojë kodin tonë përsëri. Nuk shkojmë. Pra, ne kemi CS50 Colours. Dhe tani, le të vënë një buton më atje, apo jo? Sepse ne duam të bërë kjo interaktive. Pra, le të vënë një buton këtu. Dhe ne do të quajmë këtë "trokitje e lehtë butonin këtu për të vazhduar. "Ne do ta vendosnin në mes, edhe Në fakt, është e përqendruar tashmë. Po. Pra, tani ne kemi një buton. Dhe nëse kemi drejtuar këtë përsëri, ne jemi duke shkuar që të ketë një buton bukur pak këtu. Dhe unë mund të klikoni atë, por kjo nuk ka të bëjë çdo gjë, sepse ne nuk e kemi bërë asgjë me butonin ende. Pra, le të krijojnë një tjetër pamje, apo jo? Pra, le të thonë se unë dua të përgjojnë se butonin dhe unë dua të shkoni në një faqe tjetër - një tjetër pikëpamje. Ajo që unë jam duke shkuar për të bërë është, unë mund të krijojë një pamje kontrollues, e drejtë? Tani unë do të klikoni në butonin e mia, dhe pastaj, gjëja e rëndësishme është, unë jam duke shkuar për click - ose - po, kontrolli shtypni në tastierë tim. Kontrollit. Kliko në butonin, dhe pastaj terhiq. Pra, mos harroni të mbani shtypur butonin e kontrollit. Le të bëjmë atë përsëri. Pra, të mbajë kontrollin, kliko, dhe terhiq me atë që ju doni të bëni. OK. Dhe tani, unë kam disa opsione këtu. Unë ose mund të shtyjë, ose unë mund të bëjë një modale, ose unë mund të bëjë një porosi. Push është vetëm nëse ju keni një kontrollues navigacion. Tani për tani, vështrimi ynë i parë kontrollues nuk është brenda çdo kontrollues navigacion. Pra, kontrollues navigacion është ai që ju jep butonin mbrapa në app iOS ku ju keni, ju e dini, se top, lloj, bar trashë - ku ju mund të shkoni mbrapa, ose përpara, e të tjera. Tani për tani, unë nuk kam se. Dhe kështu, kjo është arsyeja pse unë nuk mund të bëjë një shtytje. Pra, unë klikuar në shtytje aksidentalisht, këtu. Dhe në të vërtetë, le të drejtuar kodin, dhe duhet rrëzuar në mua. Vetëm në qoftë se unë shtypni butonin edhe pse, kështu që - drejtë. Pra, kjo është e keqe. Dhe, siç e shihni, këtu, ne keni mesazh gabimi. Pra, "segues Push mund të përdoret vetëm kur kontrollues burim menaxhohet nga një shembull i UI kontrollues të navigimit. " Pra, sepse kjo nuk ishte në brendësi të një kontrollues navigacion, Unë nuk mund ta bëjë këtë. Pra, tani, unë jam duke shkuar prapa në dosje, duke shkuar prapa në storyboard. Audienca: Çfarë është navigacion kontrollues, përsëri? RHED SHI: Pra, tani unë do t'ju tregoj. Le të shohim. Pra, unë jam duke shkuar për të klikoni në këtë pikëpamje kontrollues, dhe pastaj unë do të shkoj deri në produkt - në të vërtetë, jo, sorry - editor. Dhe unë jam duke shkuar për të shkuar në - në të vërtetë, e unë klikoni mbi të? Jo. Nuk shkojmë. Unë jam duke shkuar për të shkuar deri në editor, shkoni poshtë të mbjell në, dhe pastaj navigacion kontrollues. OK. Dhe, Workspace im duket me të vërtetë të çrregullt, kështu që le të pastruar këtë ide. Pra, e gjithë kjo është storyboard. Dhe në këtë mënyrë - OK, të ndaluar - Unë mund të shpejt të ndërtuar diçka si kjo. Dhe pastaj, tani unë mund të kthehem, ju e dini? Por kjo është lloj i mërzitshëm, e drejtë? Pra, ajo që unë dua të bëj është, unë nuk dua për të bërë, thjesht, një pamje të kontrollues. Le të thonë se unë të kërkuar për të bërë në të vërtetë një Pamje tavolinë kontrollues, kështu që unë mund të vënë në disa ngjyra e bukur, Në tryezë. Pra, tani që unë kam vënë sipas meje tryezë kontrollues, kam nevojë për të lidhur atë nga ky buton për të Pamje kontrollues. Kështu që unë duhet të bëni kontroll time, click, gjë terhiq përsëri. Dhe tani unë mund të bëjë shtytje, sepse unë embed ajo brenda një kontrollues lundrimit. Audienca: Navigation kontrollues vetëm lejon ju për të shkuar nga vendi në vend? RHED SHI: Po. Pra, më teknikisht, kjo është një objekt ku - kështu, në brendësi të kërkimi kontrollues objekt, ajo mban gjurmët e një sërë. Dhe kjo array mban të gjithë pasuese parë kontrollorëve. Kjo është arsyeja pse kur të shtypni përsëri, ajo shkon prapa në faqen e mëparshme. Sepse kontrollues navigacion objekt, ose kodin që kujdeset për këtë objekt, ka një rrjet që e mban të ndjekur nga këto kontrollorëve pamje, dhe mund atëherë, ju e dini, DQ pikëpamjen kontrollues dhe ju jap te një mëparshme. Pra, kjo është gjëra teknike, por - dhe unë do t'ju tregoj më vonë në Kodi, në qoftë se ne kemi kohë. Unë jam natyrë e mbaron në kohë, por - Pra, me pamje tryezë, çfarë mund të bëjmë është - Kjo zakonisht është vendosur automatikisht për Dynamic Prototype - ne jemi duke shkuar për të bërë atë Qeliza Static, përndryshe ne do të drejtuar në disa probleme. Dhe pastaj, le të thonë se unë jam duke shkuar që të ketë një seksion. Pra, seksione është si - në qoftë se ju keni parë ndonjëherë app muzikë, kur ju keni artistë, seksionet do të të jetë A-së përmes Z's - letrat - dhe pastaj, ju e dini, individi rreshtave do të jenë emrat artist. Dhe kështu, çfarë është ftohtë këtu, është se unë mund të të hyrë në të gjitha objektet brenda e storyboard tim nëpërmjet kësaj drop-down menu, too. Pra, unë jam duke shkuar për të klikoni në seksionin tim, dhe unë dua, ti e di, ndoshta pesë rreshtave. Dhe pastaj, në brendësi të çdo rresht, Unë dua të vënë një etiketë. Dhe unë jam duke shkuar për të thirrur këtë Blue. Dhe pastaj, unë dua të vënë një pikëpamje UI, ju e di, ndoshta për, si, një kuti të vogël. Kështu që unë mund të tregojë njerëzve një vrojtim i ngjyrës. Dhe unë do të shkoj përsëri në pronën dhe ndryshojë se ngjyra për të, oh, unë nuk e bëj e di, këtë një të tillë. Dhe pastaj, të vini re gjithashtu, këtu, kur unë kam pajisje, unë mund të ketë shumë nga pajisje të ndryshme që ju zakonisht shihni. Treguesi zbulimi, detaje, ose kontrolloni të shënojë, apo thjesht vetëm detaje. Pra, ndoshta ne mund të bëjmë, si, një deklarim të tregues, për shembull. Dhe pastaj, pse nuk kemi marrë këto, kopje ngjiti ato, dhe vënien e tyre në rresht tjetër tryezë. Pra, ne mund të quajmë këtë Yellow. Dhe unë mund të ketë për të zgjeruar këtë. Le të bëjnë të verdhë. Dhe në këtë mënyrë, ne mund të kopjoni paste rrugën tonë poshtë. Çfarë ishte kjo? Purple. Pra, këto janë të gjitha CS50 tipike ngjyrat që ju keni parë në klasë - në të vërtetë, më vjen keq - ose në faqen e internetit. Shpresojmë se ju djema mund të shihni ajo që unë jam duke bërë këtu. OK. E fundit. Audienca: Si keni shtoni rresht fillimisht? RHED SHI: Pra, pyetja ishte, se si nuk kam shtuar rreshtin fillimisht? Unë shkova në këtë seksion tavolinë - ose megjithatë unë mund të zgjidhni seksion tryezë - dhe pastaj, këtu, unë updated Numri i rreshtave. Dhe, më lejoni të shpresoj se kjo punon. OK. Le të shohim nëse kjo funksionon. Oh, të përsosur, awesome. OK. Ndërsa isha ndërtimin e demo tim, disa gjërat nuk janë një linjë, kështu që, faleminderit për duartrokitje. Po. Pra, le të shohim. Ne do të bëjë këtë nëntë vetëm për të bërë gjithçka - ose në të vërtetë, le të vetëm ana e të gjitha këto në zbulimin tregues. Dhe pastaj, ajo që unë dua të ju tregojnë se, gjithashtu, ishte se si unë mund të marrë secila nga ata rreshtave tryezë dhe kanë ata ndërveprojnë - oh. Jo. Oh. Gjithashtu, unë dua të ju tregojnë se - këtu, unë mund të vënë titullin e mia kontrollues navigacion, apo jo? Pra, në të vërtetë, ju do të vini re, sa më shpejt që unë ngulitur këtë pamje kontrollues brenda e kontrollues navigacion, ne shohim ky bar navigacion në krye të tonë Përfaqësimi storyboard e një pamje kontrollues. Dhe kështu, kjo na jep, si, një vizuale, lloj, të udhëzuar në ekran tonë të dukshme. Kjo është padyshim do të të jetë bar navigacion. Dhe ajo që unë dua të bëj shpejt, tani, është vënë në një tjetër - kështu që kjo pikëpamje tabelë kontrollues kam bërë nga duke marrë një nga këto dhe zvarritur atë këtu, dhe kjo është ajo që të më lejohet të shpejt, me të vërtetë, të krijojë një pamje tryezë kontrollues. Nëse ne nuk kemi kohë edhe pse, ju do të shohim se, programuar, kjo është një pak më shumë i ndërlikuar për të krijuar një tabelë Pamje kontrollues, sepse ka janë disa metoda që janë të e nevojshme për ju për të, lloj, shkruani në mënyrë që pamje tryezë kontrollues të shfaqet si duhet. Megjithatë, unë vetëm dua të ju tregojnë se, tani, një shembull ku, në qoftë se unë të marrë këtë, për shembull - Unë e kam vënë në një tjetër pamje kontrollues. Dhe tani, le të thonë se unë dua për të kontrolluar alt blu tim të parë rreshtit të tabelës që këtu. Dhe unë dua të quajmë këtë Blue. Dhe pastaj - le të shohim. Unë jam në pamje tani, dhe unë mund të ndryshojë sfond të kaltër. Dhe kështu, njoftim, këtu, kjo drop-down menu gjithashtu ju jep një hierarki të gjitha e këtyre objekteve. Pra, një gjë e rëndësishme të theksohet, këtu, është se të gjitha këto gjëra, këtu - kjo pikëpamje tabelë kontrollues, tabela pamje, pamje tavolinë seksioni, pamje tabela celular - të gjitha këto janë objekteve, në kodin. Pra, ju e dini, një emërtim tani është nën shikoni përmbajtjen, e të tjera. Kështu me radhë e kështu me radhë. Pra, nëse kemi drejtuar këtë kod, ne duhet të shihni diçka - le të shohim nëse kjo - po. Pra, ne do të shkojmë atje. Por, nëse ne nuk e bëjmë këtë, askush nga këto gjëra të tjera të punojnë. E drejtë? Pra, vetëm kjo funksionon. Dhe, për hir të kohës, unë nuk do të shkoni në, ju e dini, duke poshtë ato të tjera. Dhe kjo është fundi i, lloj, storyboard - ajo që kam kërkuar për të treguar ju për storyboard. Dhe, unë kam një shembull të punuar jashtë, në të vërtetë, të drejtë këtu. Pra, kjo është storyboard që kam bërë më parë. Pra, si ju mund të shihni, kjo ishte kontrollues tim navigacion. Pastaj kam pasur pamje të parë kontrollues tim, atëherë unë kam time view tavolinë kontrollues, dhe pastaj unë kam të gjitha këto - kështu që më parë, unë isha duke bërë diçka shumë të ndryshme. Pra, arsyeton ato gjëra. Unë ndoshta do të pastruar atë më vonë para se të I dërgoni atë të prodhimit. Por, në qoftë se ne të drejtuar këtë, ne do të shohim se të gjitha opsionet janë të në dispozicion për ne. Përveç Unë nuk e kam bërë prejardhje ato ngjyra. Pra, aplikimi bukur e thjeshtë. Tani, le të përpiqemi për të trajtuar kjo programuar. OK. Pra, për të bërë këtë, ne jemi vetëm do për të filluar një projekt të ri Xcode. Ne do të bëjë atë një aplikim bosh tani, sepse ne nuk duam të kemi storyboard. Pra, unë jam thjesht duke kufizuar veten për të mos përdorim ndonjë nga storyboard, dhe një Aplikimi bosh nuk do të më jepni një storyboard. Kjo është vetëm për të parandaluar veten nga cheating. Le të shohim. Prisni. A e I - po. OK. E drejta. Pra, këtu, ne jemi të majtë me gjë tjetër veçse kodi. Pra, më lejoni të lëvizë këtë dritare pak më shumë. E drejta. Siç mund ta shihni këtu, vetëm fotografi të ne jemi duke i dhënë jemi AppDelegate.h dhe dot m, dhe ne nuk kemi storyboard më. Pra, nëse kemi drejtuar këtë, ne ende do të të marrë në ekran të bardhë, falë Zotit. OK - ekran të bardhë, por asgjë tjetër. Dhe, këtu është pjesë e rëndësishme. Kjo është ku veprimi ndodh. Në versionet e mëparshme, nuk ka zakonisht nuk ka kod këtu, por storyboard në thelb ofron Kodi për këtë pjesë. Unë nuk do të shkojë në detaje se si. Dhe ajo që ne duam të bëjmë tani është, që ne duam për të shkuar në këtu, dhe këtë hapësirë ​​të vogël fillon krijuar aplikacionin tonë përsëri. Pra, - po? Audienca: Zoom? RHED SHI: Zoom. Po, sigurisht. OK. Do të jetë shtypja, kështu që kjo nuk duhet të çështje shumë. OK. Pra, së pari, mos harroni ne kemi dashur për të krijuar një kontrollues navigacion, apo jo? Dhe gjithashtu, si ju mund të shihni këtu, Xcode bën një punë të vërtetë të madhe të vetë-mbushje. Pra, si ju do të njoftim, emrat e çdo gjë janë shumë më të gjatë se zakonisht, por Xcode plotëson atë në për ju. Kështu që unë mund vetëm të shtypni Enter. Pra, unë dua të krijuar një navigacion UI kontrollues akrep, dhe unë mund të telefononi atë navigationController. Tani, çfarë të bëj tani? Pas kësaj shenjë barazimi, kam nevojë për të, së pari, krijuar atë brenda kujtesës. Pra, unë jam duke shkuar për të bërë NavigationController ALLOC - kështu, kjo është e ngjashme me malloc, se ju djema të përdorura në C - dhe pastaj, unë jam duke shkuar për init atë. Pra, është e vërtetë e rëndësishme që çdo objekt që keni krijuar, ju doni të ALLOC dhe init atë. Kjo do të krijojë atë dhe instantialize atë brenda e kujtesës, dhe tani ju mund të përdorni atë. Në rregull? Nëse ju nuk e bëni këtë, objekti juaj nuk ekzistojnë, dhe ju do të kandidojë në një bandë e problemeve. Dhe pastaj, unë dua të krijuar një pamje kontrollues, e drejtë? Pra, unë dua të krijuar një UIViewController star - kështu, çdo gjë është një tregues në Objektivi-C, dhe unë jam duke shkuar për të bërë diçka të ngjashme, këtu - ALLOC, init. OK. Dhe pastaj ajo që unë jam duke shkuar për të bërë është, unë jam i do të - kështu, mos harroni, kur ne e bëmë embed në kontrollues navigacion? Kjo është se si ju bëni atë në kodin. Ju jeni do të bëni navigationController pushViewController - Audienca: [padëgjueshme]. A do të ndodhë kjo për ne, apo -? RHED SHI: Oh, po. Jo. Ajo i pëlqen më të mirë. Jo, ajo do të punojë për ju, too. Pra, këto janë të gjitha metodat. Pra pushViewController është një metodë, dhe gjithashtu, më konkretisht, është një Metoda e shkallës të UI kontrollues navigacion. Sepse unë kam për të krijuar navigacion time UI yll kontrollues, dhe pastaj unë mund të telefononi këtë pushViewController on my shkallës specifike të një kërkimi UI kontrollues. Audienca: A kemi të bëjmë saktë fjalë, ose e bën atë tashmë ekziston për të? RHED SHI: Po, sepse kjo është një metodë. Është si një funksion. Është si printf. Është si scanf. Është si strcompare. Përveç ai e di atë që ju mund të dëshironi të lloji, dhe të vëreni se ajo do të gjithmonë dalë me gjëra që janë të lejuar ligjërisht për ju. Pra, në qoftë se asgjë nuk tregon deri këtu, atëherë diçka është e gabuar. Pra, pushViewController. Pra, tani, unë dua të shtyjë my krijuar rishtazi UIViewController, dhe pastaj, animuar - ndoshta jo. Për shkak se kjo do të jetë parë kontrollues view. Unë do të thotë, edhe në qoftë se unë e kam bërë animuar, kjo ndoshta nuk do të shfaqen, sepse kjo është ekran parë. Dhe mos harroni kllapa. Pra, mbani mend se si ne e përdorur kllapa? Dhe brenda kllapa, objekt i bën thirrje një metodë - kështu që objekti ynë është navigacion kontrollues dhe metoda eshte nje shtytje Pamje kontrollues animuar. Dhe shikoni se si ajo merr në dy argumente, dhe ata janë të ndara nga, lloj, fjalë, dhe një zorrë e trashë. Pra, Objektivi-C përpiqet për ta bërë atë të mirë dhe të lehtë për ju për të lexuar me zë të lartë - Kodi juaj - dhe e kanë atë gjysmë, lloj, kuptim. Megjithatë, duke bërë vetëm këtë nuk është e mjaftueshme. Më lejoni të zoom jashtë tani. Të bësh vetëm kjo nuk është e mjaftueshme për të merrni atë që kemi marrë për të parë. Kështu që këtu, ju do të vëreni se ka në të vërtetë nuk do të ketë asnjë lloj bar, këtu, apo jo? Nuk ka bar navigacion, që do të thotë se ne ende nuk e kanë marrë atë. Dhe ne mund ta provoni se nga, edhe, nga, ndoshta, duke ndryshuar sfondin e ViewController, e drejtë? ViewController.background-- ah. Pra, të shohim se si ViewController nuk kishte një ngjyrë sfond, edhe pse unë të kërkuar për të hyrë në të? Dhe kjo është për shkak se ViewController është një enë për pamje. Pra, ajo ka një pamje pronë, e cila atëherë ka një ngjyrën e sfondit. Dhe, unë mund ta vendosur atë, lloj tediously, duke e quajtur ngjyra në objektin UIColor. Pra, njoftimi këtu, redColor është një metodë. Kjo është një metodë klasë e UIcolor. Sepse unë nuk kam për të krijuar një shkallës aktuale të një UIColor në mënyrë për të thirrur metodën mbi të. Unë vetëm, thjesht, e quajti atë mbi emrin lloj-si. Unë, si, e quajti atë në int, int nëse kishte, si, një metodë të saj, për shembull. Dhe kështu, në qoftë se ne të drejtuar këtë kod, ne do të vini re se sfond është në të vërtetë nuk e kuqe. Është ende e bardhë. Dhe si mund të merrni rreth se është, vini re se si ka self.window. Kjo është, si, enë fundit për aplikimin tuaj. Kjo është gjëja e fundit që përmban çdo gjë në ekran, për një iPhone ose iPad aplikimit. Dhe, të përshtatshme, self.window ka këtë pronë të quajtur rootViewController. Dhe kjo do të jetë tregues për pamje kontrollues i parë brenda app. Pra, ajo që ne duam të bëjmë këtu, tani, është për të vendosur që të barabartë tek kërkimi tonë kontrollues. E drejtë? Sepse, teknikisht, navigacion kontrollues Mendimi ynë i parë kontrollues. Ajo mban gjurmët e një sërë pamje tjetër kontrolluesit, dhe ne e shtyu këtë Pamje kontrollues në atë grup në kontrollues të navigimit. Pra, ju nuk doni të bëni këtë. Kjo nuk do të vërtetë të ju ndihmojë. Ju dëshironi të bëni këtë, nëse do të donit të bëni një kontrollues navigacion, e cila më e ju ndoshta do, sepse ju do të dëshironi për, lloj, të ketë disa lloj, si, menu për të shkuar përsëri në ose disa homepage që të kthehen në, në vend se një ekran bosh. Po? Audienca: A është e pakëndshme për ju për të zoom në - RHED SHI: Po. Pra, vërtet. Ky është kodi, dhe tani le të test it out. Pra, ne do të shkojmë atje. Magic. Pra, OK. Falemnderit. OK. Deri tani, ajo që ne duam të bëjmë është - kështu që, ne jemi lloj i kufizuar, këtu, apo jo? Ne do të mund të shkruani çdo gjë brenda këtij funksioni një. Por, kjo nuk është se si zhvillimi IOS zakonisht punon. Pra, ajo që ne jemi duke shkuar për të bërë është, ne jemi duke shkuar për të krijuar disa fotografi të reja. Por, më saktësisht, ne do të krijuar një tjetër klasë Objektivi-C, ose një tjetër objekt - klasë dhe objekte janë të këmbyeshme këtu. Dhe, këtu është se si unë mund të, potencialisht, krijuar një tjetër klasë të kontrollorëve U. Pra, kjo është një nën-klasë, si ju do të njoftimit, këtu, kjo është një nën-klasë e Pikëpamje UI kontrollues, por unë mund të e quajti atë çdo emër tjetër këtu. Unë mund të quajmë këtë CS50, unë mund të telefononi kjo pikëpamje kontrollues, unë mund të telefononi kjo pikëpamje blah kontrollues - ndonjë gjë që unë dua. Kjo është vetëm emri për klasën. Megjithatë, ajo do të jetë e rëndësishme sepse, në thelb, ajo që unë jam duke bërë këtu është, unë jam duke krijuar një tjetër emër klasë. Pra, ajo do të jetë, si, disa lloj lloji ose një objekt. Pra, ajo duhet të jetë pak i përgjithshëm. Kjo nuk do të jetë shumë e veçantë. Dhe gjithashtu, unë dua të theksoj nga këto dy opsione. Sepse ne jemi duke bërë gjithçka në brendësi të Kodi, ndonjëherë është shumë më e lehtë për të sjellë në një file ndërfaqes, të tilla që Unë fjalë për fjalë mund të drag and drop, si ne e bëmë më herët me storyboard - ju e dini, një etiketë, ose një buton, ose çfarëdo tjetër. Dhe kështu, xibs janë fotografi që ju lejon të e që, dhe ju duhet të lidh atë deri në këtë skedë kontrollues view. Pra, unë jam duke shkuar për qëllim nuk e kontrolloni këtë. Zakonisht unë do të kontrolloni këtë, dhe në qoftë se unë vetëm e bëri këtë për iPhone apo iPad, unë do të kontrolloni këtë dhe thjesht të ketë një të tillë për, ju e dini, iPhone ose iPad. Por pasi që unë jam duke bërë universal, unë jam duke shkuar për të krijuar dy nga ato më vonë. Pra, unë jam duke shkuar për qëllim zgjidhni këtë. Kjo është gjithashtu e vërtetë e rëndësishme. Shumë herë, unë kam pasur të mete ku kjo nuk është kontrolluar. Dhe kështu, natyrisht, këtë fotografi nuk është, lloj, si, të përfshira ose të importuara brenda kësaj dosje test. Dhe kështu, kodi im ka absolutisht asnjë ide të ekzistencës të këtij file, dhe që shkakton shumë dhimbje dhe orë debugging. Por, vetëm sigurohuni që kjo është e kontrolluar në mënyrë se, ju e dini, objektivi i këtij skedë është për këtë kërkesë. OK. Pra, tani ne kemi krijuar dy fotografi të reja. Dhe këto fotografi të duket goxha bosh. Dhe, në të vërtetë, le të vazhdojë on duke krijuar fotografi xib. Pra, më parë, unë kam qenë në Prekni kakao drop-down. Tani, unë jam duke shkuar për të shkuar në antarit Interface touch, dhe si ju mund të shihni, unë mund të krijojë një storyboard. Pra, edhe Unë fillova me një bosh aplikim, unë ende mund të përdorë storyboard. Edhe pse, ajo merr ndërlikuar në aspektin se si ju doni të lidheni që në kodin tuaj. Pra, unë nuk do të shkoj atje. Por, ajo që ne duam të bëjmë tani është të krijojë një pamje. Dhe ju mund të zgjidhni për një iPhone ose një iPad. Dhe zakonisht, për të treguar Dallimi - në qoftë se ju jeni duke bërë një aplikim universal - ju ose të vënë një iPhone të theksuar, ose ju mund të bëni një Twiddly. Kjo nuk ka rëndësi. Është e thjeshtë për ju që të dallojnë e cila pikëpamje është për të cilat pajisje. Dhe kështu, tani të shohim. Unë kam një ekran që unë mund të punojnë me të. Dhe kështu, për shembull, unë mund të vënë një etiketë këtu, ju e dini, dhe unë gjithashtu mund të vënë një tjetër button këtu. Unë nuk do të shqetësojë ndryshuar vlerat këtu. Por, ajo që është e rëndësishme këtu është se pronari e file - kështu, unë jam në brendësi të iPhone pamje, fotografi iPhone xib. Dhe në këtë fushë navigacion ose drop-down menu, unë dua të shkoj në Pronari File-së. Dhe kjo është me të vërtetë hap i rëndësishëm këtu. Dua të bëj pamje të klasës kontrollues, kështu që këtë fotografi xib është do të jetë i lidhur me Pamje kontrollues tim. Dhe çdo gjë që unë bëj brenda mendimit tim kontrollues është programuar do të reflektohet në këtu. Pra, megjithatë, vini re se - në të vërtetë, le të bëjmë këtë pikëpamje blu sfond, për shembull. Ose të gjelbër. Dhe pastaj, kështu që nëse ju do të vini re, në vitin ky kod, kjo është ajo ku kemi marrë të tanë kontrollues navigacion. Edhe pse ne e bëmë këtë hap, është e ende do të jetë e kuqe jo, e gjelbër. Dhe ka një arsye pse. Kjo është për shkak se, kur ne inited Pamje kontrollues tonë, këtu - keq, kjo është pak i çmendur - kur ne inited Shiko kontrollues tonë këtu, Ne inited atë të tipit përgjithshme UIViewController. OK? Pra, ne as nuk e bëjmë ai me këtë klasë. Pra mbani mend, kjo është si një klasë tani. Kjo mund të mendohet si një lloj, vetëm si UIViewController është një lloj. Dhe në mënyrë që të përdorin atë, ajo që ne duhet të bëni është të importojë atë - import ViewController - dhe, si ju mund të shihni, ajo autofills atë për mua. Pra, ViewController - dhe tani, këtu, unë mund të ndryshojë këtë UIViewController të ViewController. Dhe tani, këtu, unë mund të ndryshojë kjo për ViewController. Le të drejtuar këtë përsëri. Është ende e kuqe. Dhe arsyeja pse është e ende e kuqe është për shkak se - Woah, çfarë ka ndodhur atje? Ne kemi kërkuar që të lidhen këtë xib paraqesë me pamje kontrollues. Megjithatë, në mënyrë që të bëjë në fakt se, ne kemi nevojë për të shkuar në këtë. Kur ne bëjmë init, ne duam të bëjmë initWithNibName, dhe pastaj ne duam të bëjë në string View_iPhone, për shembull. Ju mund të injorojë pako këtu. Dhe kjo do të lejojë ne që, në fakt - uh oh, ka një problem. E drejta. Dhe kështu, ka një problem, sepse, në fotografi tonë view xib, ne kemi një etiketë dhe ne kemi një buton. Megjithatë, edhe pse ne kemi të lidhur ata të dy, nuk ka asgjë brenda ViewController.h ose ViewController.m që reflektojnë ato buttons ose ato etiketat. Pra, ne kemi nevojë për të shkruar ato në si Pronat e pamje kontrollues. Pra, kjo është se si ju të deklarojë një pronë. Ajo merr në, zakonisht, këto dy opsione. Për qëllim të na e këtij seminari, Unë do të thoja se, në përgjithësi, shumica prona janë nonatomic dhe të mbajë. Ju mund të lexoni nga Google në kërkim, ju e dini, diferenca midis nonatomic dhe të mbajë në, ju e dini, Google apo diçka. Dhe unë do të ju merr në, si, Stack Del nga shtrati, ku njerëzit do të kenë përgjigje për dallimet ndërmjet atyre. Por tani për tani, kjo është ajo që ne duan të jenë të shqetësuar me. Dhe ne duam të bërë një emërtim UI, yll, dhe ne mund të telefononi atë çka ne duam. Ne mund të telefononi këtë, ju e dini, etiketë. Dhe, ne do të krijojë një tjetër një për butonin. Dhe mos harroni të përfshijnë yll, sepse kemi të bëjmë me pointers shumë e shumë kudo brenda i Objektivi-C. Megjithatë, kjo ende nuk do të zgjidhë problemi, si ju mund të shihni këtu. Dhe arsyeja është sepse, sa herë që duan për të lidhur një emërtim fotografi xib ose një butonin te programit, ose kokë dhe fotografi zbatimi, ne duam të shtoni këtë pjesë të kodit - prizë. Vini re se kjo është një fjalë kyçe. Dhe, sa më shpejt që të përfundojë të shtypni se jashtë, ajo duhet të ketë këto dy qarqe, këtu. Zakonisht, ata nuk janë të mbushur in Unë nuk jam i sigurt se pse ata janë. Por zakonisht, ju do të keni në dorë lidhur ato duke shkuar në këtë anë të zona shërbimet. Dhe kështu, tani, unë kam marrë etiketën e mia zgjedhur, dhe unë dua të drag këtë të ri referenca prizë të pronarit skedarit tim, dhe pastaj klikoni mbi Label. Deri tani, më në fund, ky emërtim është lidhur me këtë etiketë. Dhe ky emërtim është ajo që ne jemi duke shkuar për përdorni programuar për të ndryshuar e saj text, font tij, sfondi i saj ngjyra, e të tjera. Pra, pse nuk e bëjmë ne njëjtë për butonin? Dhe si ju do të njoftimit, për butonin, kjo është pak më e komplikuar. Sepse, Unë do të thotë, ju jeni duke menduar për të shtypni mbi një buton, kështu që atë e mori një shumë e opsione se si përdoruesit mund të shtypni mbi një buton. Dhe atëherë, ne do të shohim më vonë se ne mund të lidheni këtë të tanë Kodi për të bërë atë punë. Pra, tani për tani edhe pse, ne duam të lidhur ajo në butonin aktuale brenda kodit tonë. Pra, ne do të shkojmë në prizë të re referenca, dhe pastaj të bëjë butonin. Tani, le të drejtuar këtë përsëri. Uh oh. OK. Unë nuk e di se çfarë po ndodh këtu tani. Whoa. Vetëm një moment, këtu. Në fakt, pse nuk kemi marrë një shikojmë një shembull tjetër në interesi i kohës. OK. Pra, këtu është përgatitur më lehtë shembull për ViewController. Siç mund ta shikoni këtu, unë kam përfshirë pronat për etiketë dhe butonin. Dhe pastaj, kjo pjesë e kodit këtu - kjo IBaction - ishte një lidhje për këtë buton këtu. Kështu si ju mund të shihni këtu, Touch Up Inside është lidhur për përzgjedhës quajtur Button presion. Pra, ne në fakt mund të kalojnë nëpër lëvizje përsëri, këtu, duke marrë Touch Up Brenda dhe zvarritur atë në Pronari File-së, dhe më pas klikoni në Button presion. Tani, le të drejtuar kodin tonë. Deri tani, ky buton tani punon dhe do të na në faqen tjetër. Dhe, në aspektin e pamje kontrollues tonë, kjo është pjesë e kodit që mori kujdes e Button presion. Dhe është e rëndësishme të theksohet këtu, që Unë kam krijuar një lloj tjetër pamje kontrollues quajtur një tavolinë Pamje kontrollues. Pra, kjo ishte e ngjashme për të mbështetur në storyboard, kur unë zvarritur një nga këto kontrollorëve view tryezë në storyboard. Unë jam duke krijuar një tjetër Tregues në pamje tryezë kontrollues, ALLOC dhe init-ing atë, dhe pastaj duke bërë vetë dot kontrollues navigacion, shtytje ViewController, ky i ri viewController. Dhe unë e kam vendosur animacion në po, sepse tani brenda app im, dhe unë duan që në fakt të parë animacion shkuar nga faqen kryesore në tryezë Pamje kontrollues. Audienca: A ju ende merak për mbledhjen e mbeturinave? RHED SHI: Çfarë është ajo? Jo. Pra, pyetja është, a keni për të punuar me mbledhjen e mbeturinave? Pra, Xcode 4 kishte si ARC, e cila është numërimit automatike referencë. Dhe kështu, zakonisht kur ju filloni një të ri Projekti, ju do të shikoni se, për shkak se askush nuk dëshiron të merret me liruar kujtesës dhe sende. Por unë mendoj se në Xcode 5, nuk është edhe se opsion për projektin e ri. Pra, ajo automatikisht e bën këtë për ju. Po? Audienca: A mund të eksportojë një PDF në storyboard tuaj? RHED SHI: Po, patjetër. Pra, të gjitha këto do të përfshihen në kod burim, kështu që ju djema mund të shikoni Projekti aktual Xcode për të. Po? Audienca: Por, dua të them, si, mund të shkruar një PDF me storyboard tim? Nëse unë vetëm dua të eksportit imazhe të treguar dikë. RHED SHI: Oh yeah. Unë mendoj se, ndoshta, ju mund vetëm të të marrë një e shtënë ekran. Po, dhe dërgoni atyre një ekran shtënë apo diçka. Po. Pra, le të shohim. Në interes të kohës, unë mendoj kjo është e gjitha l mund të mbulojë sot. Por, unë e di kjo është, në fakt, vetëm mezi prekur sipërfaqen e IOS zhvillimit. Pra, ju lutem mos ngurroni të më kontaktoni nëse ju keni ndonjë pyetje në lidhje me iOS zhvillimit. Dhe, me shpresë, unë do të jetë në gjendje të pastër disa nga kodit të burimit fotografi kod, në mënyrë që ju do të keni disa shembuj të vërtetë e bukur për të punuar me të. Për më tepër, në qoftë se ju djema do në CS50 Hackathon, unë mund ose mund të mos jetë atje, dhe unë mund të ndihmojë jashtë me disa zhvillimit IOS, too. Pra, faleminderit shumë, djema.