RHED SHI: Vítejte viz CS50 seminář - Úvod do iOS. Děkuji vám všem za účast. Doufám, že jste stejně nadšení jak jsem o iOS. V loňském roce jsem se CS50 jako druhák, a já jsem v podstatě naučil iOS for my konečný projekt. A to bylo dost - dobře, že to nebylo snadné, ale existuje spousta podpůrných výukových programů on-line. A já opravdu doufám, že se to seminář, dám ti kluci hlavu začít na iOS vývoje Takže, pokud jde o vývoj iOS, tam jsou dvě hlavní věci, které jsme chcete pokrýt dnes. Za prvé, jazyk - jazyk, bude v Objective-C. Budeme opravdu slyšet něco opravdu vzrušující. Takže, můžete se připojit celou Apple komunita vývojářů a vybudovat některé opravdu úžasné aplikace. Také iOS 7 je krásná, doufejme, pro některé z vás. Ale je to kontroverzní, já vím. A hlavně, co chci udělat, je průvodce můžete pomocí Objective-C, a také Xcode, který je integrovaný vývojové prostředí, které budete práce v pro iOS. A tak, jen slovo o Objective-C. V podstatě, to je přesně stejný jako C, ale se spoustou dalších věcí. A tak, přísněji, je to vlastně super-sada C. Takže cokoliv, co jste můžete udělat v C právě teď, což je v podstatě rád pset 0 až 6, vy můžete udělat v Objective-C. Takže nemusíte bát o tento nový jazyk, který se chystáte učit. Už jste se vztahuje mnoho z toho, protože jste vše udělali C Tento minulost semestr, kromě teď budeš mít mnohem více pracovat. A já jen tak, aby vás vedl přes Pár příkladů poukázat na některé z klíčových rozdílů, které jsem našel byly opravdu důležité, když jsem se dozvěděl, Objective-C v loňském roce. Tak vlastně tak, druhý bod je, Objective-C, je, samozřejmě, objektově orientované. A budeme diskutovat o trochu o tom, co to znamená, že později. V podstatě je to jako, jak jste pracovali s structs v uplynulém pset, s uzly a podobné další podobné věci. Až na to, v Objective-C, všechno je objekt, a budete mít procházející kolem ukazatele na objekty spíše než samotné hodnoty. Takže, je to prostě něco důležitého mít na paměti. Tak proč nezačít s několika rozdíly v syntaxi mezi C a Objective-C? Chci zdůraznit # include, můžete Víš, standardní io.h v C a C + +, s Objective-C verze, která, které je # import, a pak nějaký hlavičkový soubor. V tomto případě by bylo UIKit, Víte, lomítko UIKit.h. Mohlo by to také být, víte, MKMapview aby jste lomítko MKMapview.h, pokud chcete dělat, jako, mapu uvnitř vaší aplikace. Podobné věci, jako že. Takže důležité je zahrnout se nyní změnilo importovat. Ale myšlenka zůstává. Budeš se dováží nějakou z hlavičkového souboru do programu. Chci také upozornit na rozdíl mezi printf a NSLog. Nicméně, jak jsme řekli dříve, Objective-C je přísný super-sada C, což znamená, že existuje printf v Objective-C, taky. Ale většina lidí nepoužívá to. Většina lidí používá tento NSLog, protože to vám dává časové razítko, a uvidíme je v akci později. Ale, to je obecně mnohem užitečnější způsob, jak vytisknout proměnné. A chci také zdůraznit, že NSLog se v jen stejný zástupné hodnoty jako printf dělá - takže% d je pro int, % F je na plováku. Nicméně, já chci zdůraznit, Tento velmi poslední - NSLog% na znamení - že je zástupný symbol pro objekt. A jak už jsem řekl dříve, Objective-C se zabývá do značné míry především v objektech, a tak to přijde v použití, když chcete vytisknout, možná, možná NSArray, nebo NSDictionary, nebo NSString. Tak, také, Všimněte si, že v naší NSLog prohlášení, máme na znamení před citátu - která je na znamení, že řetězce, teď, v Objective-C, jsou objekty. Oni jsou již jen char hvězdy. Jsou to objekty a jsou zacházeno jako takový. Takže, je to opravdu důležité, že při Používáte NSLog trvá v NS řetězec, což znamená, že budete mít zahrnout AT v přední části uvozovky. A to je důvod, proč vidíte, tady, ve všech moje volání funkce tohoto NSLog, jsem mají AT před uvozovek, dokonce ačkoli% d a% f je jsou všechny stejné od C. Jakékoliv dotazy tak daleko? Pokusím se projít tak rychle, aby že můžeme mít více času na práci s Xcode a Objective-C, tak že vy můžete dostat více obeznámeni s tím. Dále chci upozornit na něco, koncepčně důležité. Takže, v C, většina věcí jsou funkce. Vyrábíme volání funkce. Prohlašujeme FUNKCE tímto způsobem, se zadejte první návrat, pak název funkce, závorky, a pak bez ohledu na argumenty a typ Tyto argumenty chceme projít dovnitř A Objective-C, protože všechno je objekt nebo třída - takže třída a objekt jsou dva pojmy, které jsou většinou synonymem s sebou, tak jsem jim mohou používat zaměnitelně v průběhu semináře. Ale uvidíte, že máme metody Objective-C, spíše než funkce. A metody patří k objektům. Takže stejně, možná se Například uzel - náš typ [neslyšitelný] Uzel z pset 6 nebo 5 - máme slovo, majetku, nebo další ukazatel uzel. Metody jsou prostě funguje uvnitř z nějaké struktury. Takže v tomto případě, struktura bude objekt, a pak je metoda něco, co patří k objektu. A to je, jak byste prohlásit, druh, metoda. Ty by začít znovu, návrat typ - tak jsem se snažil barvy kód klíčová slova zde, aby vy můžete vidět, alespoň, formátování podobnosti mezi funkcí prohlášení a metody prohlášení. Takže začnete s, víte, návrat typ - v tomto případě je to pole, nebo NSArray ukazatel - a pak máte tuto metodu. A pak, co je zajímavé je zde že namísto závorky, jsme mají tyto dvojtečky. A pak, v přední části našich argumentů, jsme řečeno, opět v závorkách typ našeho argumentu. Tak, teď se snažím, aby srovnání, víte, n a číslo, protože to oba jako ints. A pak, druhý je typ NSUInteger. A pak, s Objective-C, když vám Chcete mít více argumentů ve vaše metoda klauzule, vy, druh, oddělit se něco jako toto - Nejsem si zcela jist, jak to popsat, ale je to dobrý příklad toho, jak se může mít více argumentů tam. Dalo by se, samozřejmě, jen zcela ignorovat andArray tlustého střeva NSArray pole, pokud byste chtěli jen metody že se v jednom argumentu. Ano, otázka. DIVÁKŮ: Jsou i NSUInteger a NSArray argumenty, které mohou být vzaty v v NSArray? RHED SHI: Ano. Takže, dovolte mi to vysvětlit. Takže, ano. Takže, otázka zněla jsou NSUInteger a NSArray * typy argumentů, a to je správné. Takže, vždy chcete zadat, co typ vašeho argumentu. A tady, snažím se představit vám na některé syntaxe a Vocab Objective-C, tak to jsou skutečné typy že budete zabývá. A jak jste si všimli, pole už ne, tak nějak, jednoduché konzolové věci. Jsou to objekty. I když, pokud bychom jít na další snímek, můžeme vidět, že můžeme pevný kód NSArray v Objective-C se potom symbol na před držáky. Nejsem vlastně docela jisti, zda I syntakticky pevně pole správně pro verzi C, ale to je má být v poli C. Tak, to je to, jak byste, víte, možná použít funkce nebo metody, které jsme vytvořili dříve. Je to tak? Takže, toto je místo, kde jsme se vyhlásit naše Funkce a naše metoda. A teď chceme, aby jejich použití v náš program, a to je jak bychom to udělat. Takže, v C, měli byste mít, víte, Možná, bool b, a nastavte ji na rovnat funkce, a poté můžete projít v argumentech. V Objective-C, je to docela totéž. Máte NSArray * my_array, a to bude rovnat - teď, pouze Rozdíl je zde tento objekt věc, které jsem zvýrazněn žlutě, a Jak můžete vidět, v C, je tu žádný jiný yellow slovo. A je to proto, že metody patří s určitým objektem. Takže to je důvod, proč musím mít objekt že, druh, volání této metody na číslo nula, a poté NSArray, b, c, d. Jakékoliv dotazy na to? Uvidíme těchto pojmů v akci brzy, když jdeme do demo. OK. Teď, chci s tebou mluvit trochu stručně o Xcode 5, který je integrované vývojové prostředí že budete pracovat. Vím, že mnoho z vás, nebo některé z vás, nemají Mac, což je problém proto, že není k dispozici Xcode pro Windows a PC. Neptejte se mě proč, ale asi - jo, korporátní. Cokoliv. Ale tak jako tak, takže se omlouvám, pokud některé si muset stáhnout nějaký virtuální stroj pro Mac v Aby bylo běžet Xcode 5. Ale je to docela šikovný software k použití. A tak, než se ponořit do jakéhokoliv druhu demo, já jen chci, aby vám ukázat, obraz toho, co Xcode vypadá ve vašem okna, a pak také mluvit o to, co celý tento prostor. Takže, je to něco jako naučit se používat aplikaci Microsoft Word, s výjimkou chcete se seznámil se všemi různých věcí, které se tu děje. Tak za prvé, chci tě upozornit na panelu nástrojů v horní části. Uvidíte, že na vrcholu, budete mít název souboru - nebo, vlastně, vaše jméno projektu a pak se název vašeho souboru. Vezměte na vědomí, hry a tlačítka STOP. To jsou ty, které budete používáte pro spuštění aplikace na simulátor - simulátor iOS. Tím se automaticky přichází s Xcode 5, takže si nemusíte dělat starosti stahování nějaký simulátoru. Stačí stisknout tlačítko přehrávání a pak to běží vaše aplikace. A můžete pohrát s vámi, a uvidíte, jak to funguje později. A pak, v centru města, samozřejmě, je kde se všechny vaše krásné kódu jít. A pak, na levé straně, budete si muset vybrat mají to, druh, složka - navigace - a pak, budete také vidět, že spolu s ikonou složky, existuje spoustu dalších ikon, které tam budou užitečné později. A pak, na pravé straně je nástroj oblast, kde můžete pracovat s některé objekty a určit, vás Víte, co by mělo být barva, co Text písmo by mělo být, et cetera. I když všechno, co děláte v technické oblasti, můžete dělat v kódu stejně. A tak, budu prochází dvěma příklady použití, jednoduše, žádný kód na všichni - nebo velmi minimální kódu - verše veškerý kód, jen proto, že vy vědět, co si může a nemůže dělat v Xcode a Objective-C. A pak, konečně, se ve spodní části, budete mít ladění plochu. Takže už nemusíte běžet GDB, et cetera, vašich programů. Je to automaticky udělá za vás. A můžete také vytisknout věci v této oblasti. Takže vlastně, později půjdeme přes mario.c, jestli jste ještě pamatují , že v Xcode. Tak, že by měla být zábava. A pak, jen aby ho zpět do Objective-C, chci upozornit na to, co co můžete udělat, jestliže prohlášení. Takže, víte, protože Objective-C je nadmnožinou C, vše, co udělat, je, doslovně, stejně jako C. stačí mají drobné rozdíly. Takže, zjistíte formulář pro, pokud tvrzení je stále stejný - jste v případě, a pak máte závorky stav uvnitř, a pak složené závorky na cokoliv Chcete udělat uvnitř tam. Nicméně, chtěl jsem, aby tento snímek nahoru zde pouze pro ilustraci, že, protože máme co do činění s objekty nyní, budeme muset používat tyto věci s názvem, jako je rovná řetězec, který je, shodou okolností, způsob řetězec nebo objekt NSString. Tak, slovo, v tomto případě, je NSString námitky, a to má metodu nazvanou je rovný řetězec, a pak jsme kolem v pevném kódovaný řetězec vidět ať už to jsou rovné k sobě navzájem. Jakékoliv dotazy tak daleko? OK. A já chci jít přes pro prohlášení také. Tak například, pokud bychom chtěli, aby smyčky po celé délce řetězce v C, toto by měli být obeznámeni s vámi. A v Objective-C, já chci upozornit na to, tak nějak, metoda zvaná počet. No, vlastně, dovolte mi, abych jen vzít to zpátky. Count je metoda pole. Nicméně, je to konkrétně Vlastnost pole, což je důvod, proč lze použít tečka notaci. Ale já nechci, aby se do příliš mnoho Tento koncepční věci, já jen chci, vám ukázat, jak by se věci vypadají jako v Objective-C oproti C A také chci poukázat na to, že i když jsem byl s použitím NSUInteger před všemi mými i let v Objective-C, můžete také použít int, int, protože je zcela platné v Objective-C, také. Ano? DIVÁKŮ: Je to jen stylistické, nebo je - RHED SHI: Jo. Takže, jak uvidíte - tak, otázka zněla, že jen stylistické problém. Jak uvidíte, mám, tak nějak, hvězda hvězdička, co se na dně, a že odkaz vás zavede na přetečení zásobníku tvoří, kde někdo vysvětluje rozdíl mezi int v NSInteger a NSUInteger. A tak si můžete přečíst o tom později. Tyto snímky budou, samozřejmě, Vám k dispozici. Pojďme se podívat. OK, super. Tak, to je také zahrnuta do snímku protože jsem si myslel, to byla skvělá Webové stránky, které vás seznámí na syntaxi Objective-C. Takže, vlastně, proč jsme se přesunout do Chrome a podívejte se na tyto stránky? Správně. Takže, co vám chci ukázat, kluci tady je to obrázek. Tak, to je, tak nějak, bude to, co budete vidět uvnitř některého Xcode soubor. Vlastně, proč ne my jen tak okamžik, druh, vzít dovnitř Takže, tato kniha - že je objekt, který máme co do činění se. A pak, že to zřejmě bude dědí z jiného objektu, ale nemusíte se obávat, že. A pak, že, snad, má Některé členské proměnné. Důležitá věc, kterou chci vám ukázat, Je metody instance, zde. Takže, metody instance jsou označeny tímto znaménkem minus. A pak, jak jste si všimli, že jsme již začínají vidět vzor pro metody prohlášení, že jo? Návratový typ, název metody, a pak typ argumentu, a pak název argumentu. A to znaménko mínus znamená, že je metoda instance, což znamená, že Tyto metody jsou k dispozici pouze pro objekty, které byly instance. Chcete-li kontrastní, že metody s plus přihlásit před nimi jsou třídy metody, což znamená, že můžete volat Tyto metody, a to i v případě, že nemáte objekt vytvořil ještě. Takže, pro jasný příklad, NSString je třída. A můžete volat, například, metody třídy na NSString - skutečný, stejně jako, slovo NSString. Nicméně, za účelem využití těchto metody, ve skutečnosti je třeba vytvořit řetězec. Například, NSString hvězda řetězec rovná v uvozovkách, hello world. A pak můžete použít tyto metody - metody instance - Dobrý den na této světové řetězce. Tak, to je ten rozdíl mezi metody instance a metody třídy. A právě jsme se vztahuje tato část. Vlastnosti jsou další věc, která jsou uvnitř objektů, v podstatě. A vy deklarovat s na majetku klíčového slova. Máte tyto možnosti, tady, že já ti to vysvětlím později, když jdeme do demo. Ano? Dobrý den. DIVÁKŮ: Mohl byste přiblížit, prosím? RHED SHI: Oh ano. Promiňte. DIVÁKŮ: Děkuji. RHED SHI: To by mělo být mnohem lepší. DIVÁKŮ: Jo. Děkuju. RHED SHI: Ano, prosím, připomeň mi, pokud Zapomněl jsem se přiblížit nebo oddálit. Tak, to je všechno, co jsem chtěl ukázat na - hej, to je hodně - pro tento web. Takže, pojďme zpět k našim snímků. Vlastně, teď pojďme se na chvíli ponořit se do demo. Takže, začneme s nový Xcode projektu. Takže, pokud budete otevírat Xcode na všechny vaše stroje, měl by si vzít některé stránky, kde se říká, jako, jeden otevřený up existující projekt nebo nový projekt, a vy byste měli klepněte na nový projekt. A pak by se měl vzít jste na tuto obrazovku. Ano? DIVÁKŮ: Pokud nemáme Mac, my jen tak odpočívat? RHED SHI: Nebo se podívejme na s někým, jo. Jo. Můžete odpočívat, taky. OK. Takže, co budeme dělat jako první, teď, je, ve skutečnosti, jdeme na to jedna žádost pohled. Takže, pokud si všimnete, co je skvělé o Xcode a podpory Apple pro Vývojáři se, že máte spoustu šablony pro práci s již. Dalo by se, například, aby master-detail aplikace. Můžete udělat hru - a vlastně jsem se jít do hry, protože hry jsou jiný příběh pro iOS vývoje. A oni jsou trochu oddělit, tak jsem se jít do toho. Pak jste strana založená na aplikace. Máte aplikaci kartu - tak líbí, například Bank of America Asi má, stejně jako, s kartami aplikace. To jsou ty, kde máte tlačítka ve spodní části. A pak, máte Sprite Kit hru. Nebo můžete pracovat od nuly, což je to, co budeme dělat později. Ale pojďme nejprve začít s jedna žádost pohled. Poté, bude to požádat o název produktu, a my můžeme jen dělat zkoušku. Název organizace - tak, název organizace, identifikátor firmy - ty jsou důležité, pokud se chystáte aby vaše aplikace na App Store. Jiné, než to, že váš kód bude běžet naprosto v pořádku, aniž by to. To bude důležité, pokud vám chci - to samo o sobě, stejně jako, dejte aplikace na telefonu, nebo tak něco, a zkouška to se, víte, v reálném životě - to bude důležité. To vede ke obvykle spojena s nějaký developer účtu s Apple. A tak, já vím, asi, hodně z vás nebude mít žádné vývojářské účty. Vím, že univerzita má jeden. Myslím, že CS má jeden. Ale můžete mi e-mail a já se pokusím zjistit, že pro vás. Ale právě teď, právě jsem dal do některé zástupné věci zde. A můžete, samozřejmě, tady, zvolte , zda chcete, aby to bylo pouze v iPhone, iPad v, nebo obojí - univerzální použití. Tak, teď, pojďme dělat univerzální, jen vidět obě strany nástupiště. Pojďme se podívat. Tak, teď, jdu zachránit je v nějakém adresáři. Nezáleží na tom, kde se - vám jej vždy přesunout později. A teď, jsme přinesli naší Xcode projektu. Já bych si starosti o všechno. Navrhoval bych nedotýká žádné z to, pokud nevíte přesně, co děláte. Takže, tohle všechno, prostě ignorovat z větší části. Nebudete muset dotknout, a pokud Myslíte si zkazit pár věcí tady, dostane trochu složitější. Takže, proč se díváme na soubory na levá strana v našem navigátoru. Zde máme AppDelegate.h. Máme AppDelegate.m Takže, jak budete Oznámení jsme header soubory, které končí v dot h, a máme realizace - ve skutečnosti, dovolte mi, abych zoom palců OK. Dovolte mi přiblížit palců Dobře, takže jste header soubory a Máte implementační soubory. Vlastně - OK. To je trochu divný, ale mějte se mnou. Pak, protože jsme si vybrali jeden pohled aplikace, budeme mít práci s scénáře. Takže, storyboard je něco, co Apple má přijít s opravdu pomoci vývojáři rychle prototyp jejich aplikace. Tak, to je místo, kde si můžete vytvořit aplikace bez zápisu jediný řádek kódu. Nicméně, v našem jediném použití pohledu, my, samozřejmě, mají soubor pro našeho názoru, který je pohled na regulátor. Takže, máme záhlaví a file implementace, zde. A já jdu na oddálení teď, protože budeme muset pracovat na scénáři. Takže, tady je náš pohled. Pokud bychom jednoduše spustit aplikaci právě teď, že to není moc vzrušující děje. Takže, uvidíte tuto bílou obrazovku. OK? A v našem utility oblasti, můžeme přidat spoustu různých věcí k tomu. Takže, když máte co do činění s obrazovkami v iOS, regulátory zobrazení jsou objekty obsahujícími, druh, vaše názory. Takže, pohled regulátor vždy má vlastnost s názvem pohled. A tento názor, typicky obsahuje, Víte, co si Chcete vidět na obrazovce. Tak dobře, pojďme prostě začít tím, Možná, možná označení. Takže, pojďme dát štítek tam - držet ji ve středu. Tak, teď, když jsem kliknul na štítku, jsem může jít do vlastností inspektora a začít se změnou jeho hodnoty. Říkejme tomu CS50 barvy. A mohu také změnit písmo. Takže místo toho dělá systém, který je výchozí, můžeme udělat vlastní jeden. Můžeme změnit - Víte, ultralehká, aby bylo 32. A pak se můžeme, aby naše okno větší. DIVÁKŮ: Myslíte si, že můžete zvětšit v jen o málo víc, možná? RHED SHI: Jo? OK. DIVÁKŮ: Jen to klepnout? RHED SHI: Uvidíme. To funguje? DIVÁKŮ: Jen projít Xcode? RHED SHI: Jistě. OK. Úžasné. Diváků: Štítek pod? Štítek? RHED SHI: Co je to? DIVÁKŮ: Co drop-down byla nálepka pod? RHED SHI: Takže, otázka je, co drop-down byla nálepka pod? Je třeba, jednoduše, pod tu. Myslím, že je to kostka věc. Ale obvykle, je to výchozí - Já jsem prostě jít sem dolů až najdu štítek. Jo. Takže teď, máme štítek. Pojďme vystředit. A Xcode nám dává pokyny pro centrování objektů. Tak, teď pojďme spustit náš kód znovu. Tam jdeme. Takže, máme CS50 Barvy. A teď, pojďme dát tlačítko tam, že jo? Protože chceme, aby se Tento interaktivní. Takže, pojďme dát tlačítko tady. A budeme volat toto tlačítko "kohoutek zde pokračovat. "Budeme se soustředit se, rovněž Ve skutečnosti, je to již ve středu. Jo. Tak, teď máme tlačítko. A když jsme se spustit to znovu, jedeme mít pěknou tlačítko tady. A já si na něj, ale to nedělá něco, protože jsme neudělali ještě něco s tlačítkem. Takže, pojďme vytvořit jiný pohled, ne? Takže řekněme, že chci využít toto tlačítko a chci, aby přejděte na jinou stránku - jiný pohled. Co budu dělat, je, mohu vytvořit pohled řadič, ne? Teď budu klikněte na mé tlačítkem, a poté, Důležité je, budu klepněte na tlačítko - nebo - ano, stiskněte tlačítko ovládání na mé klávesnici. Ovládací. Klikněte na tlačítko a přetáhněte. Takže, nezapomeňte držet ovládací tlačítko. Udělejme to znovu. Takže, držte ovládací prvek, klepněte a přetáhněte na to, co chcete dělat. OK. A teď, mám několik možností zde. Mohu buď tlačit, nebo můžu udělat modální, nebo mohu udělat vlastní. Push pouze pokud máte navigační ovladač. Právě teď, naše první pohled regulátor není uvnitř některého navigační ovladač. Takže, navigační ovladač je ten která vám dává na tlačítko zpět na aplikace iOS, kde máte, víte, že nejvyšší, druh, tlustý bar - kde se můžete vrátit zpět, nebo vpřed, et cetera. Právě teď, nemám to. A tak, to je důvod, proč nemůžu dělat push. Tak jsem kliknul na stisk náhodou, zde. A vlastně, pojďme spustit kód, a měl by pád na mě. Pouze v případě stisknutí tlačítka když, tak - pravdu. Tak, to je špatné. A jak můžete vidět, zde jsme se chybová zpráva. Takže, "push přejde mohou být použity pouze v případě, zdroj regulátor je řízen instance UI navigačního ovladače. " Takže, protože to není uvnitř navigace regulátor, Nemohl jsem to udělat. Tak, teď, jdu zpátky do složka, sahající do scénáře. DIVÁKŮ: Co je navigační regulátor znovu? RHED SHI: Tak, teď já vám ukážu. Pojďme se podívat. Takže, jdu kliknout na tohoto pohledu regulátor, a pak budu pokračovat až produktu - Vlastně ne, omlouvám - editor. A já jdu do - Vlastně jsem na něj klikněte? Ne. Tam jdeme. Chystám se jít až do editoru, jít dolů vložit, a pak navigace regulátor. OK. A můj pracovní prostor vypadá opravdu chaotický, takže pojďme to vyčistit. Takže, tohle všechno je storyboard. A tímto způsobem - OK, zastavit - Mohu se rychle postavit něco takhle. A pak, teď se můžu vrátit, víš? Ale je to trochu nuda, ne? Takže, co chci udělat, je, nechci aby se, prostě, pohled regulátor. Řekněme, že jsem chtěl vlastně dělat tabulka pohled řadič, takže mohu dát do některé pěkné barvy, do tabulky. Tak, teď, když jsem dal podle mého názoru tabulky regulátor, musím připojit zpět Z tohoto tlačítka pohled na regulátor. Takže musím dělat svou kontrolu, klepněte na tlačítko, přetáhněte věc znovu. A teď můžu udělat tlačit, protože jsem vložit se uvnitř navigace regulátoru. DIVÁKŮ: Navigační ovladač stačí umožňuje přejít z místa na místo? RHED SHI: Ano. Takže, technicky, je to objekt, kde - tak, vnitřek navigaci Regulátor objekt, je udržuje pole. A že pole má všechny následné zobrazit řadiče. To je důvod, proč, když stisknete tlačítko zpět, je vrátí na předchozí stránku. Vzhledem k tomu, navigační ovladač objekt, nebo kód, který se stará o Tento objekt má pole, které udržuje sledování těchto regulátorů zobrazení, a pak, víte, DQ názor Regulátor a dá vám zpět ten předchozí. Takže, je to technické věci, ale - a já vám ukážu později kód, pokud budeme mít čas. Jsem trochu běží na čas, ale - Takže, s výhledem na stůl, to, co můžeme udělat, je - Je to obvykle automaticky nastaví na dynamický Prototype - budeme dělat to statické buňky, jinak budeme narazíte na nějaké problémy. A pak, řekněme, že jdu mít jednu sekci. Takže, profily je jako - pokud jste někdy viděli hudební aplikace, kdy Máte umělci, by sekcí je to přes Z's - dopisy - a pak, víte, individuální Řádky by být jména interpretů. A tak to, co je v pohodě tady, je to, že mohu přístup ke všem objektům uvnitř z mého scénáře přes tento drop-down menu, taky. Takže, budu klikněte na mé části, a já chci, víš, možná pět řádků. A pak, v každé řadě, Chci vložit štítek. A já jdu volat tuto modrá. A pak, chci, aby zobrazení uživatelského rozhraní, můžete Víš, možná pro, jako, malé krabičce. Tak, že můžu ukázat lidem, náhled barvy. A já se vrátím k majetku a změnit tuto barvu na, oh, já ne Víte, tenhle. A pak si všimněte, i tady, když mám příslušenství, můžu mít spoustu různých doplňků které obvykle vidět. Indikátor zveřejnění, detail, nebo zaškrtnutí, nebo prostě jen detail. Takže, možná bychom mohli dělat, jako, je zveřejnění indikátor, například. A pak, co kdybychom se tyto kopie, vložit, a dát je do Následující tabulka řádek. Takže, můžeme volat tuto žlutá. A budu muset rozšířit to. Udělejme to žlutá. A tímto způsobem, můžeme kopírovat vložit cestu dolů. Co to bylo? Purple. Takže, to všechno jsou typické CS50 barvy, které jste viděli ve třídě - ve skutečnosti, je mi líto - nebo na internetových stránkách. Doufejme, že vy můžete vidět to, co tady dělám. OK. Poslední. DIVÁKŮ: Jak jste se přidat řádek původně? RHED SHI: Takže, otázka je, jak jsem přidat řádek na počátku? Šel jsem do této části tabulky - nebo jak mohu vyberte část tabulky - a pak, tady, aktualizováno I počet řádků. A dovolte mi, abych doufám, že to funguje. OK. Uvidíme, jestli to funguje. Oh, dokonalé, úžasné. OK. I když jsem byl buduje svou demo, některé věci nebyly sladěny, takže díky za potlesk. Jo. Takže, pojďme se podívat. Uděláme to devět, jen aby všechno - nebo vlastně, řekněme, zase všechny z nich na zveřejnění ukazatele. A pak, co vám chci ukázat, příliš, bylo, jak mohu vzít každý z těch, Řádky tabulky a nechat ovlivňovat - oh. Ne. Oh. Také vám chci ukázat - zde, mohu dát název mého navigační ovladač, ne? Takže vlastně, zjistíte, jakmile jsem vložený Tento pohled řadič uvnitř navigačního regulátoru, vidíme, Tento navigační lišta v horní části naší storyboard zastoupení z pohledu regulátoru. A tak nám to dává, jako, vizuální, druh, průvodce naší viditelnou obrazovku. To se samozřejmě bude být navigační panel. A to, co chci dělat rychle, Nyní, je dát do jiného - takže tato tabulka pohled řadič jsem udělal podle přičemž jeden z nich a tažením tady, a to je to, co mi umožnilo rychle, opravdu, vytvořit zobrazení tabulky regulátor. Pokud máme čas, když budete vidět, že programově, je to trochu složitější vytvořit tabulku view controller, protože je několik metod, které jsou potřebné pro Vás, druh, napište v pořadí pro zobrazení tabulky Regulátor má být zobrazen korektně. Nicméně, chci vám ukázat, nyní, příklad, kde bych si to, například - Dal jsem v jiném pohledu regulátoru. A teď, řekněme, že chci řídit alt můj úplně první modrá řádek tabulky se zde. A chci volat tento modrá. A pak - podívejme. Jsem na pohled, a já může změnit pozadí na modrou. A tak, oznámení, tady, to drop-down Nabídka také vám dává hierarchii všech z těchto objektů. Takže důležité si uvědomit, tady, je, že všechny tyto věci zde - tato tabulka pohled řadič, tabulka pohled, tabulka řez, pohled na stůl buňka - všechny z nich jsou objektů, v kódu. Takže, víte, značka právě teď je pod pohled na obsah, et cetera. A tak dále a tak dále. Takže, když jsme se spustit tento kód, se měli byste vidět něco - Uvidíme, jestli to - jo. Tak, jdeme na to. Ale pokud to neuděláme, že žádný na tyto jiné věci fungují. Je to tak? Takže jen tohle funguje. A kvůli času, nebudu jít do, víte, uvedení dolů ty ostatní. A to je konec, druh, storyboard - to, co jsem chtěl ukázat, jste na scénáři. A já mám cvičil příklad, Vlastně tady. Tak, to je scénář že jsem dělal dříve. Takže, jak vidíte, je to můj navigační ovladač. Pak jsem měl svůj první pohled řadič, pak jsem měl tabulku s výhledem na řadič, a pak jsem měl všechny z nich - takže dříve, jsem dělal něco úplně jiného. Takže, omluvte ty věci. Asi budu uklidit později, než Pošlu ho k výrobě. Ale, když narazíme to, uvidíme že všechny možnosti jsou které máme k dispozici. Až na to neměl dělat pozadí ty barvy. Takže, milý jednoduchá aplikace. Nyní, pojďme se snaží řešit to programově. OK. Takže k tomu, že jsme jen tak začít nový Xcode projektu. Uděláme to prázdný aplikace nyní, protože nechceme, aby se storyboard. Takže jsem prostě omezit sám sebe ne použít některý ze scénáře, a prázdný aplikace nebude dej mi scénář. To je jen proto, aby se zabránilo Sám z podvádění. Pojďme se podívat. Počkejte. Řekl jsem - Ano. OK. Správně. Tak, tady jsme vlevo s nic jiného než kód. Takže mi dovolte, abych přesunout okno mírně nad. Správně. Jak můžete vidět zde, je pouze soubory jsme vzhledem jsou AppDelegate.h a tečka m, a my nemáme storyboard už. Takže pokud jsme se spustit tento, jsme stále bude dostat na bílou obrazovku, díky bohu. OK - bílá obrazovka, ale nic jiného. A tady je důležitou součástí. To je místo, kde akce proběhne. V předchozích verzích, je tu obvykle žádný kód zde, ale scénář v podstatě stanoví kód pro tuto část. Nebudu zacházet do detailů o tom, jak. A to, co chceme udělat, je, chceme jít sem, a tento malý prostor začne opět vytvářet naši aplikaci. Takže - ano? DIVÁKŮ: Zoom? RHED SHI: Zoom. Jo, jasně. OK. Budu psát, takže by to nemělo ohledu na to příliš mnoho. OK. Takže, první, nezapomeňte Chtěli jsme vytvořit navigační ovladač, ne? A také, jak můžete vidět zde, Xcode dělá opravdu skvělou práci, self-plnění. Takže, jak jste si všimli, že názvy všechno je mnohem delší, než obvykle, ale Xcode vyplní ji za vás. Tak jsem si jen stiskněte klávesu Enter. Takže, chci vytvořit navigaci UI ukazatel regulátor, a můžu říkat navigationController. A teď, co mám teď dělat? Po tomto rovnítkem, musím nejprve, vytvořit vnitřní paměti. Takže, já budu dělat NavigationController Alloc - tak, je to podobné malloc, že vy používané v C - a pak, já jdu na to init. Takže, je to opravdu důležité, aby každá objekt, který vytvoříte, budete chtít, aby Alloc a init jej. To bude vytvořit a instantialize ho do paměti, a Nyní jej můžete použít. V pořádku? Pokud nechcete dělat, že váš objekt dělá neexistuje, a budete narazit na spoustu problémů. A pak chci vytvořit pohled řadič, ne? Takže, chci vytvořit UIViewController hvězda - tak, všechno je ukazatel v Objective-C, a já budu dělat, něco podobného, ​​zde - Alloc, init. OK. A co budu dělat, pak je, že jsem bude - tak, Pamatuji si, když jsme embed v navigačním ovladači? To je, jak to udělat v kódu. Budeš dělat navigationController pushViewController - DIVÁKŮ: [neslyšitelné]. Bude se to stalo u nás, nebo -? RHED SHI: Jo, jo. Ne. Je mi líbí víc. Ne, bude to fungovat i pro tebe. Tak, to jsou všechny metody. Takže pushViewController je metoda, a i, konkrétně, že je to metoda instance rozhraní navigační ovladač. Protože jsem musel vytvořit svůj UI navigaci Regulátor hvězdy, a pak jsem mohou volat tuto pushViewController na mém konkrétní příklad navigaci UI regulátor. DIVÁKŮ: Ještě musíme udělat přesný slovo, nebo to už pro něj existují? RHED SHI: Ano, protože je to metoda. Je to jako funkci. Je to jako printf. Je to jako scanf. Je to jako strcompare. Kromě toho, že ví, co budete chtít typu, a všimněte si, že to bude vždy přijít s věcmi, které jsou právně povoleno pro vás. Takže, když už nic objeví tady, pak je něco špatně. Tak, pushViewController. Tak, teď chci, aby se zasadila můj nově vytvořený UIViewController, a pak, animovaný - možná ne. Protože to bude První pohled regulátor. Myslím, že i když jsem se udělat animovaný, to asi nebude zobrazovat, protože je to první obrazovka. A pamatujte držáky. Takže si uvědomte, jak se používá závorky? A uvnitř závorek, objekt vyzývá metody - takže náš objekt je navigace regulátor, a metoda je tlak Pohled regulátor animovaný. A uvidíte, jak to trvá dva argumenty, a oni jsou od sebe odděleny, druh, slova, a tlustého střeva. Takže, Objective-C se snaží, aby to pěkné a pro vás snadné čtení nahlas - Váš kód - a mají to částečně, druh, smysl. Nicméně, dělat jen to nestačí. Dovolte mi, abych oddálení teď. Dělat jen to není dost dostat to, co jsme se dostali dříve. Tak tady, zjistíte, že tam je ve skutečnosti to nebude nějaký druh bar, tady, že jo? Neexistuje žádný navigační lišta, což znamená, že že jsme stále ještě nedostal ji. A můžeme otestovat, zda se také tím, že, možná změna pozadí ViewController, že jo? ViewController.background-- ah. Tak, jak ViewController neměl barva pozadí, i když jsem Chtěl se k nim dostat? A to proto, že ViewController je kontejner pro zobrazení. Tak, to má názor majetek, který pak má barvu pozadí. A mohu nastavit, trochu nudně, voláním barvy na objekt UIColor. Takže, oznámení tady, redColor je metoda. Je to metoda, třída UIcolor. Protože jsem neměl k vytvoření aktuální instance UIColor, aby volat metodu na to. Já jen, jednoduše, nazval jej na název typu, jako je. Já, jako, volal ho na int, int, pokud měl, jako, způsob k tomu, například. A tak, když jsme spuštění tohoto kódu, budeme Všimněte si, že pozadí je ve skutečnosti není červená. Je to stále bílé. A jak se můžeme obejít, že je, Všimněte si, jak je tu self.window. To znamená, že stejně jako je konečný obal pro vaši aplikaci. To je konečný věc, která obsahuje vše na obrazovce pro iPhone nebo iPad aplikace. A, pohodlně, self.window má tuto vlastnost nazvanou rootViewController. A to se bude ukazatel na první pohled řadič uvnitř z vaší aplikace. Takže, co chceme dělat tady, teď, je nastavit, aby se rovná našemu navigaci regulátor. Je to tak? Vzhledem k tomu, technicky, navigace Regulátor je náš první pohled regulátor. To udržuje řadu jiných pohledu regulátory, a my tlačil to Pohled regulátor do tohoto pole v navigačním regulátoru. Takže, nechcete to udělat. To by vám opravdu pomůže. Chcete-li to provést, pokud byste chtěli dělat navigační ovladač, který nejvíce z vás asi bude, protože budete chtít do, druh, mít nějaký, jako, menu se vrátíte zpět nebo některé Stránka se vrátit do, spíše než prázdná obrazovka. Ano? DIVÁKŮ: Je to nepříjemné, pro vás přiblížit - RHED SHI: Jo. Takže, jo. To je kód, a teď pojďme vyzkoušet si to. Tak, jdeme na to. Magie. Takže OK. Děkuju. OK. Takže teď, co chceme udělat, je - tak, jsme trochu omezené, tady, že jo? Mohli bychom mohly napsat vše uvnitř této jedné funkce. Ale to není, jak vývoj iOS obvykle pracuje. Takže, co budeme dělat, je, že jsme bude vytvářet nějaké nové soubory. Ale konkrétně, budeme vytvořit další Objective-C třídy, nebo jiný objekt - třídy a objekty jsou vzájemně zaměnitelné zde. A tady je, jak jsem mohla, potenciálně, vytvořit další třídu regulátorů U. Takže, je to sub-class, jak si všimnete, tady je to sub-třída Pohled UI regulátor, ale mohu nazvat jakýkoli jiný název zde. Mohl bych zavolat tuto CS50, mohl bych zavolat tento pohled řadič, mohl bych zavolat Tento bla pohled řadič - něco chci. To je jen název pro třídu. Nicméně, to bude důležité, protože v podstatě, co dělám tady je, jsem vytvořit jiný název třídy. Takže, to bude, stejně jako některé druh typu nebo objektu. Takže by to mělo být trochu obecný. Nebude to být velmi konkrétní. A také chci upozornit z těchto dvou možností. Vzhledem k tomu, že děláme vše, co uvnitř kód, někdy je to mnohem jednodušší aby v souboru rozhraní tak, aby Můžu doslova přetahovat, as jsme dříve s storyboard - Víte, štítek, nebo tlačítko, nebo cokoli jiného. A tak, xibs jsou soubory, které umožňují uživateli to, že, a vy budete muset připojit jej do tohoto pohledu regulátoru souboru. Takže, jdu se záměrně to zkontrolovat. Obvykle bych zkontrolovat, a když jsem jen dělal to pro iPhone nebo iPad, I by zkontrolovat a prostě mít jeden pro, víte, iPhone nebo iPad. Ale od té doby dělám univerzální, jdu vytvořit dva z těch později. Takže, jdu se záměrně zrušte to. To je také velmi důležité. Mnohokrát jsem měl chyby kde to nebylo zaškrtnuto. A tak, samozřejmě, tento soubor není, trochu, jako, součástí nebo dovezené uvnitř tohoto testu složky. A tak, můj kód nemá absolutně žádnou představu, o existenci tohoto souboru, a , který způsobuje velké bolesti a hodiny ladění. Ale, jen se ujistěte, to se kontroluje tak, že, víte, cílem této Soubor je pro tuto aplikaci. OK. Tak, teď jsme vytvořili dva nové soubory. A tyto soubory vypadají docela prázdný. A vlastně, pojďme pokračovat na tím, že vytvoří XIb soubory. Takže, dříve jsem byl v Kakao Dotykový drop-down. Teď jsem jít do User Dotykový, a jak vidíte, jsem může vytvořit scénář. Tak, dokonce jsem začal s prázdnou aplikace, můžete i nadále používat storyboard. I když, to bude složité, pokud jde o tom, jak se chcete připojit že váš kód. Takže, nebudu tam. Ale to, co chceme dělat, Nyní je vytvořit pohled. A můžete si vybrat pro iPhone nebo iPad. A typicky, k označení rozdíl - pokud děláte univerzální použití - můžete buď dát podtržítko iPhone, nebo si můžete udělat Twiddly. Je to opravdu nezáleží. Je to prostě pro vás rozlišovat který pohled je pro jaké zařízení. A tak, teď se podívejte. Mám obrazovku, že mohu pracovat. A tak, například, můžu dát štítek tady, víte, a mohu také dát další tlačítka zde. Nebudu měnit Hodnoty, které zde. Ale to, co je důležité, je zde že vlastník souboru se - tak, že jsem uvnitř iPhone pohled, iPhone Xlb soubor. A v této oblasti navigace nebo drop-down menu, chci jít do Vlastník souboru. A to je opravdu Významným krokem zde. Chci, aby se pohled třídy regulátor tak, aby tento soubor je XIb bude spojena s můj názor regulátor. A vše, co mám dělat, uvnitř mého názoru Regulátor je programově bude se odráží na zde. Takže, nicméně, všimněte si, že - ve skutečnosti, pojďme udělat tento názor pozadí modři, například. Nebo zelená. A pak, takže pokud si všimnete, v roce tento kód, to je místo, kde jsme se dostali k našemu navigační ovladač. I když jsme udělali ten krok, že je to Stále bude červená, nikoli zelená. A je tu důvod, proč. Je to proto, že když jsme inited Podle našeho názoru regulátor, zde - Omlouvám se, je to trochu blázen - když jsme tady inited našeho názoru regulátor, jsme to inited obecného typu UIViewController. OK? Takže jsme neměli ani to že se do této třídy. Takže pamatujte, že to je jako třídu teď. To může být myšlenka jako typ, jen as UIViewController je typ. A za účelem použití, že to, co musíme udělat, je importovat - import ViewController - a, jak vidíte, je to autofills to pro mě. Takže, ViewController - a teď, tady, můžu to změnit UIViewController na ViewController. A teď, tady, můžu změnit to ViewController. Pojďme spustit znovu. Je to stále červená. A důvod, proč je to stále červené je proto, že - woah, co se tam stalo? Chtěli jsme spojit případně tuto XIb soubor s výhledem na regulátoru. Aby však skutečně dělat , že musíme jít do toho. A když budeme dělat init, chceme dělat initWithNibName, a pak chceme, aby dělat na řetězec View_iPhone, například. Můžete ignorovat zde svazku. A to se děje, aby nám, vlastně - uh oh, je tu problém. Správně. A tak, je tu problém, protože v Podle našeho názoru Xlb soubor, máme štítek a máme tlačítko. Nicméně, i když jsme připojeni ti dva, nic uvnitř ViewController.h nebo ViewController.m které odpovídají těm, které tlačítka nebo ty štítky. Takže, musíme psát ty se jako vlastnosti zobrazení regulátoru. Tak, to je jak deklarovat vlastnost. Trvá v, obvykle Tyto dvě možnosti. Pro účely námi a semináře, Řekl bych, že, obecně, Většina vlastnosti jsou nonatomic a udržet. Můžete si přečíst o Google vyhledávání, Víte, je rozdíl mezi nonatomic a udržet na, vám Víte, Google nebo tak něco. A já tě vezmu do, jako, Stack Overflow, kde lidé budou mít odpovědi na rozdíly mezi těmi. Ale teď, že to, co jsme Chci se soustředit na. A my chceme, aby se UI štítek, hvězda, a můžeme říkat, co chceme. Můžeme říkat, víš, štítek. A budeme vytvářet další jeden pro tlačítko. A nezapomeňte zahrnout hvězdičku, protože máme co do činění s ukazateli skoro všude uvnitř o Objective-C. Nicméně, že se stále neřeší Problém, jak můžete vidět zde. A důvodem je to, že vždy, když jsme se chcete připojit štítek Xlb souboru nebo Tlačítko s programem, nebo záhlaví a realizace souboru, chceme přidejte tento kus kódu - zásuvky. Všimněte si, že je to klíčové slovo. A jakmile jsem dokončit psaní že ven, měl by mít tyto dva kruhy, zde. Obvykle, oni nejsou vyplněna Nejsem si jistý, proč jsou. Ale obvykle, budete muset ručně Připojení je tím, že půjdete na této straně pomůcky oblast. A tak teď, mám svůj štítek vybrána, a chci přetáhnout tento nový odkazování zásuvky majitel mého souboru, a poté klikněte na štítek. Takže teď, konečně, toto označení je připojen k tomuto štítku. A toto označení je to, co budeme použít programově změnit jeho textu, jeho font, jeho pozadí barva, et cetera. Tak proč ne my Totéž pro tlačítko? A jak jste si všimli, pro tlačítko, je to trochu složitější. Vzhledem k tomu, myslím, že jste měl stiskněte na tlačítku, takže je to tu hodně z možností, jak uživatelé můžete stisknout na tlačítko. A pak, uvidíme později, že to můžeme připojit k naší kód, aby to fungovalo. Takže, teď když se chceme připojit se na tlačítko skutečné uvnitř našeho kódu. Tak jdeme na nové referenčního výstupu, a pak to tlačítko. Nyní, pojďme spustit znovu. Uh oh. OK. Já nevím, co se teď děje. Whoa. Jen jeden moment, tady. Vlastně, proč ne my se podívejte se na další příklad v Zájem času. OK. Takže, tady je snadněji připravit příkladem ViewController. Jak můžete vidět tady, jsem součástí vlastnosti pro štítek a tlačítko. A pak, tento kus kódu zde - tento IBaction - bylo spojení tohoto tlačítka zde. Takže jak vidíte zde, dotykové uvnitř je připojen k selektoru tzv. Stisknutí tlačítka. Takže, můžeme skutečně projít pohyb opět tady, tím, že osahávat Uvnitř a přetažením na File majitel, a pak klikněte na tlačítko stisknuté. Nyní, pojďme spustit náš kód. Takže teď, toto tlačítko nyní pracuje, a nás zavede na další stránku. A co se týče našeho názoru regulátoru, to je kus kódu, který se péče o tlačítko stisknuté. A to je důležité poznamenat,, že Vytvořil jsem další typ zobrazení Regulátor s názvem tabulky pohled na regulátor. Tak, to byl podobný k sobě ve storyboard, když jsem vytáhl jednu z Tyto regulátory tabulka pohled do scénáře. Já jsem vytvořit další Ukazatel na tabulku View Controller, Alloc a init-ing, a pak dělá vlastní tečka navigační ovladač, tlačit ViewController, tento nový viewController. A já jsem nastavit animaci ano, protože teď v mé aplikaci, a já Chcete skutečně vidět animaci děje z domovské stránky na stůl pohled na regulátor. DIVÁKŮ: Myslíte si stále strach o sběru odpadků? RHED SHI: Co je to? Ne. Takže, otázka je, máte pracovat s garbage collection? Takže, Xcode 4 měl jako ARC, který je automatické počítání referencí. A tak, většinou, když začnete nové Projekt, měli byste zkontrolovat, že v důsledku nikdo opravdu chce řešit uvolnění paměti a tak. Ale myslím, že v Xcode 5, není ani že volba na novém projektu. Takže, je automaticky udělá za vás. Ano? DIVÁKŮ: Můžete exportovat PDF ve svém scénáři? RHED SHI: Jo, určitě. Takže, budou zahrnuty všechny tyto v zdrojový kód, takže vy můžete vyzkoušet Skutečná Xcode projekt pro něj. Jo? DIVÁKŮ: Ale, myslím, jako, mohu tisknout PDF s mým scénáři? Pokud jsem chcete exportovat obrázky, které ukazují někoho. RHED SHI: Ach jo. Myslím, že možná, můžete jen pořídit snímek obrazovky. Jo, a poslat jim obrazovku rána nebo tak něco. Jo. Takže, pojďme se podívat. V zájmu době, myslím, to je všechno můžu pokrýt dnes. Ale já vím, že je to ve skutečnosti, jen sotva dotkl povrchu iOS vývoj. Takže, prosím, neváhejte mě kontaktovat, pokud Máte nějaké dotazy týkající se iOS vývoj. A doufejme, že budu schopen vyčistit se část kódu pro zdroj kód soubory, takže budete mít nějaké opravdu pěkné příklady pro práci s. Jiné, než to, jestli jste se děje na CS50 Hackathon, smím nebo může tam být, a můžu pomoct s některými iOS vývoje, taky. Takže, díky moc, kluci.