1 00:00:00,000 --> 00:00:07,880 2 00:00:07,880 --> 00:00:09,800 >> RHED SHI: Välkommen till se CS50 seminarium - 3 00:00:09,800 --> 00:00:11,630 Introduktion till iOS. 4 00:00:11,630 --> 00:00:13,290 Tack för att ni kom. 5 00:00:13,290 --> 00:00:16,610 Jag hoppas du är lika glada som jag är om iOS. 6 00:00:16,610 --> 00:00:22,300 Förra året tog jag CS50 som en sophomore, och jag i princip lärde iOS för min 7 00:00:22,300 --> 00:00:23,490 slutprojekt. 8 00:00:23,490 --> 00:00:26,350 Och det var ganska - 9 00:00:26,350 --> 00:00:30,530 Tja, det var inte lätt, men det finns massor av support tutorials på nätet. 10 00:00:30,530 --> 00:00:33,760 Och jag hoppas verkligen att denna seminarium, ska jag ge er ett huvud 11 00:00:33,760 --> 00:00:36,750 börja på iOS utveckling 12 00:00:36,750 --> 00:00:40,490 >> Så, i termer av iOS utveckling, det finns två saker som vi 13 00:00:40,490 --> 00:00:42,090 vill täcka i dag. 14 00:00:42,090 --> 00:00:43,290 För det första språket - 15 00:00:43,290 --> 00:00:46,650 språket kommer att vara i Objective-C. Vi ska faktiskt höra 16 00:00:46,650 --> 00:00:47,750 något riktigt spännande. 17 00:00:47,750 --> 00:00:51,500 Så kan du gå med i hela Apple gemenskap av utvecklare och bygga några 18 00:00:51,500 --> 00:00:52,940 riktigt grymma appar. 19 00:00:52,940 --> 00:00:58,670 >> Även iOS 7 är vacker, förhoppningsvis, till vissa av er. 20 00:00:58,670 --> 00:01:01,130 Men det är kontroversiellt, jag vet. 21 00:01:01,130 --> 00:01:05,349 Och framför allt, vad jag vill göra är guide dig genom Objective-C, och även 22 00:01:05,349 --> 00:01:10,650 Xcode, som är integrerat utvecklingsmiljö som du kommer att 23 00:01:10,650 --> 00:01:13,460 arbetar i för iOS. 24 00:01:13,460 --> 00:01:19,140 >> Och så, bara ett ord på Objective-C. I grunden är det exakt samma som C, 25 00:01:19,140 --> 00:01:22,790 men med en hel del andra saker. 26 00:01:22,790 --> 00:01:27,710 Och så, mer strikt, det är faktiskt en super-set av C. Så något som du 27 00:01:27,710 --> 00:01:32,280 kan göra i C just nu, vilket är i grund och botten gillar pset 0 till 6, du 28 00:01:32,280 --> 00:01:34,170 kan göra i Objective-C. 29 00:01:34,170 --> 00:01:38,620 >> Så, känner mig inte rädd om denna nya språk som du kommer att lära sig. 30 00:01:38,620 --> 00:01:42,120 Du har redan täckt en hel del av det, eftersom du har alla gjort C den gångna 31 00:01:42,120 --> 00:01:45,880 termin, utom nu du ska att ha mycket mer att arbeta med. 32 00:01:45,880 --> 00:01:49,270 Och jag kommer bara att leda dig genom en par exempel för att belysa vissa 33 00:01:49,270 --> 00:01:53,920 av de viktigaste skillnaderna som jag hittade var verkligen viktigt när jag lärde mig 34 00:01:53,920 --> 00:01:57,180 Objective-C förra året. 35 00:01:57,180 --> 00:02:00,910 >> Jo faktiskt, så, den andra punkten är, Objective-C är, självklart, 36 00:02:00,910 --> 00:02:02,200 objektorienterad. 37 00:02:02,200 --> 00:02:06,340 Och vi kommer att diskutera lite om vad det betyder senare. 38 00:02:06,340 --> 00:02:11,340 I grund och botten, det är som hur man arbetat med structs i den gångna pset, med 39 00:02:11,340 --> 00:02:13,360 noder och liknande andra sånt. 40 00:02:13,360 --> 00:02:17,110 Utom i Objective-C, är allt ett objekt, och du kommer att bli 41 00:02:17,110 --> 00:02:20,720 går runt pekare till objekt snarare än själva värdena. 42 00:02:20,720 --> 00:02:25,050 Så det är bara något viktigt att tänka på. 43 00:02:25,050 --> 00:02:29,140 >> Så, varför inte vi börjar med några skillnader i syntax mellan C och 44 00:02:29,140 --> 00:02:30,540 Objective-C? 45 00:02:30,540 --> 00:02:38,310 Jag vill lyfta fram # include, du vet, standard io.h i C och C + +, med 46 00:02:38,310 --> 00:02:44,030 Objective-C-versionen av det, som är # import, och sedan någon form av 47 00:02:44,030 --> 00:02:44,790 header-fil. 48 00:02:44,790 --> 00:02:48,165 I detta fall skulle det vara UIKit, du vet, snedstreck UIKit.h. 49 00:02:48,165 --> 00:02:53,560 Det kan också vara, du vet, MKMapview till dig slash MKMapview.h om du vill 50 00:02:53,560 --> 00:02:56,370 att göra, som en karta inne i din app. 51 00:02:56,370 --> 00:02:57,110 Liknande saker. 52 00:02:57,110 --> 00:03:01,250 >> Så, är det viktiga inkludera har nu ändrats för att importera. 53 00:03:01,250 --> 00:03:04,340 Men idén är fortfarande. 54 00:03:04,340 --> 00:03:10,460 Du kommer att kunna importera något slags av header-filen i ditt program. 55 00:03:10,460 --> 00:03:14,550 >> Jag vill också belysa skillnaden mellan printf och NSLog. 56 00:03:14,550 --> 00:03:19,760 Men som vi sagt tidigare, Objective-C är en strikt super-uppsättning 57 00:03:19,760 --> 00:03:22,800 C, vilket innebär att printf existerar i Objective-C också. 58 00:03:22,800 --> 00:03:24,340 Men, de flesta människor inte använder det. 59 00:03:24,340 --> 00:03:28,245 De flesta använder denna NSLog eftersom det ger dig en tidsstämpel, och vi får se 60 00:03:28,245 --> 00:03:29,780 den i handling senare. 61 00:03:29,780 --> 00:03:33,560 Men, är det generellt en mer användbar sätt att skriva ut variabler. 62 00:03:33,560 --> 00:03:38,220 >> Och jag vill också betona att NSLog sker på precis samma 63 00:03:38,220 --> 00:03:41,650 platshållarvärden som printf gör - 64 00:03:41,650 --> 00:03:45,900 så% d är för en int, % F är ett flöte. 65 00:03:45,900 --> 00:03:49,750 Men jag vill lyfta fram det allra sista - 66 00:03:49,750 --> 00:03:52,960 NSLog% snabel - 67 00:03:52,960 --> 00:03:55,390 som är en platshållare för ett objekt. 68 00:03:55,390 --> 00:04:01,160 Och som jag sa tidigare, Objective-C-erbjudanden ganska mycket mestadels i objekt, 69 00:04:01,160 --> 00:04:05,020 och så detta kommer i bruk när du vill skriva ut, kanske, kanske en 70 00:04:05,020 --> 00:04:08,390 NSArray eller NSDictionary, eller NSString. 71 00:04:08,390 --> 00:04:13,750 >> Så, även märke till att, i vår NSLog uttalande, har vi ett snabel framför 72 00:04:13,750 --> 00:04:15,380 av citatet - 73 00:04:15,380 --> 00:04:20,769 det är för att beteckna att strängarna, nu, i Objective-C är objekt. 74 00:04:20,769 --> 00:04:23,310 De är inte längre bara röding stjärnor. 75 00:04:23,310 --> 00:04:25,530 De är objekt och är behandlas som sådana. 76 00:04:25,530 --> 00:04:28,690 >> Så det är verkligen viktigt att när du använda NSLog det tar i en NS 77 00:04:28,690 --> 00:04:32,580 sträng, vilket innebär att du måste att inkludera en i framför din 78 00:04:32,580 --> 00:04:34,270 citattecken. 79 00:04:34,270 --> 00:04:38,290 Och det är därför du ser, här, i alla min funktion samtal till detta NSLog, jag 80 00:04:38,290 --> 00:04:42,400 ha en åtmin framför offerter, även även om% d och% f: s är 81 00:04:42,400 --> 00:04:45,200 i alla fall från C. 82 00:04:45,200 --> 00:04:47,930 >> Har du frågor så långt? 83 00:04:47,930 --> 00:04:50,920 Jag ska försöka gå igenom det här snabbt så att vi kan få mer tid att arbeta 84 00:04:50,920 --> 00:04:55,210 med Xcode och Objective-C, så att ni kan få mer 85 00:04:55,210 --> 00:04:57,630 bekant med den. 86 00:04:57,630 --> 00:05:01,900 >> Därefter vill jag lyfta fram något konceptuellt viktigt. 87 00:05:01,900 --> 00:05:05,130 Så, i C, det mesta är funktioner. 88 00:05:05,130 --> 00:05:06,280 Vi gör ett funktionsanrop. 89 00:05:06,280 --> 00:05:10,190 Vi förklarar funktioner på detta sätt, med returtyp först, sedan 90 00:05:10,190 --> 00:05:13,570 funktionsnamn, parenteser, och sedan oavsett argument och vilken typ av 91 00:05:13,570 --> 00:05:15,590 dessa argument vi vill passera i. 92 00:05:15,590 --> 00:05:19,970 Och Objective-C, eftersom allt är ett objekt eller en klass - 93 00:05:19,970 --> 00:05:23,970 så klass och objekt är två termer som är mestadels synonymt med varandra, 94 00:05:23,970 --> 00:05:28,270 så jag kan växla mellan dem under hela seminariet. 95 00:05:28,270 --> 00:05:34,090 >> Men, ser du att vi har metoder Objective-C snarare än funktioner. 96 00:05:34,090 --> 00:05:36,390 Och metoder hör till objekten. 97 00:05:36,390 --> 00:05:38,950 Så lika, kanske ta exempelvis nod - 98 00:05:38,950 --> 00:05:40,250 vår typ [OHÖRBAR] 99 00:05:40,250 --> 00:05:44,390 nod från pset 6 eller 5 - 100 00:05:44,390 --> 00:05:49,590 Vi har ordet, egendom, eller nästa nod pekaren. 101 00:05:49,590 --> 00:05:53,880 Metoder är helt enkelt fungerar inne av någon form av struktur. 102 00:05:53,880 --> 00:05:57,510 >> Så i detta fall skulle konstruktionen vara objektet och sedan metoden är 103 00:05:57,510 --> 00:05:59,260 något som hör till ett objekt. 104 00:05:59,260 --> 00:06:02,650 Och detta är hur du skulle förklara, sortera av en metod. 105 00:06:02,650 --> 00:06:07,990 Du skulle börja med, igen, avkastningen typ - så försökte jag färg 106 00:06:07,990 --> 00:06:12,990 koda nyckelorden här så att ni kan se, åtminstone, formatering 107 00:06:12,990 --> 00:06:17,650 likheter mellan funktion deklarationer och metoddeklarationer. 108 00:06:17,650 --> 00:06:21,990 Så börjar du med, du vet, en återgång typ - i det här fallet, det är en array, eller 109 00:06:21,990 --> 00:06:23,910 en NSArray pekaren - 110 00:06:23,910 --> 00:06:26,710 och då har du den här metoden. 111 00:06:26,710 --> 00:06:30,900 Och sedan, vad som är intressant här är att istället för att ha parenteser, vi 112 00:06:30,900 --> 00:06:32,900 ha med kolon. 113 00:06:32,900 --> 00:06:38,450 Och sedan, framför våra argument, vi uttryckt, igen, i parentes typ 114 00:06:38,450 --> 00:06:39,370 av våra argument. 115 00:06:39,370 --> 00:06:43,160 >> Så, just nu är jag försöker göra det jämförelse mellan, du vet, n och 116 00:06:43,160 --> 00:06:45,450 nummer, eftersom de är både som ints. 117 00:06:45,450 --> 00:06:49,580 Och sedan, den andra är en NSUInteger typ. 118 00:06:49,580 --> 00:06:56,390 Och sedan, med Objective-C, när du vill ha flera argument 119 00:06:56,390 --> 00:07:00,030 din metod klausul, dig, sorts, skilja ut dem ungefär som här - 120 00:07:00,030 --> 00:07:03,790 Jag är inte helt säker på hur man ska beskriva det, men det här är ett bra exempel på hur man 121 00:07:03,790 --> 00:07:06,530 kan ha flera argument där. 122 00:07:06,530 --> 00:07:10,360 >> Du kan, naturligtvis, bara helt ignorera andArray kolon NSArray 123 00:07:10,360 --> 00:07:13,240 array om du bara ville ha en metod som tar i ett argument. 124 00:07:13,240 --> 00:07:13,677 Ja, fråga. 125 00:07:13,677 --> 00:07:18,701 >> Publik: Är båda NSUInteger och NSArray argument som kan tas i 126 00:07:18,701 --> 00:07:21,530 inom NSArray? 127 00:07:21,530 --> 00:07:22,060 >> RHED SHI: Ja. 128 00:07:22,060 --> 00:07:23,400 Så, låt mig förklara. 129 00:07:23,400 --> 00:07:23,790 Så, ja. 130 00:07:23,790 --> 00:07:30,260 Så frågan var är NSUInteger och NSArray * typer av argument, 131 00:07:30,260 --> 00:07:31,570 och det är rätt. 132 00:07:31,570 --> 00:07:35,700 Så, vill du alltid ange vad vilken typ av argument är. 133 00:07:35,700 --> 00:07:41,570 Och här, jag försöker att presentera dig till några av syntaxen och Vocab av 134 00:07:41,570 --> 00:07:45,910 Objective-C, så de är faktiska typer att du kommer att ha att göra med. 135 00:07:45,910 --> 00:07:48,970 >> Och som ni kommer att märka, matriser inte längre, sorts, 136 00:07:48,970 --> 00:07:50,780 enkla konsol saker. 137 00:07:50,780 --> 00:07:52,060 De är objekt. 138 00:07:52,060 --> 00:07:56,700 Även om vi går vidare till nästa slide, kan vi se att vi kan 139 00:07:56,700 --> 00:08:02,510 hårdkoda en NSArray i Objective-C med helt enkelt en vid symbol framför 140 00:08:02,510 --> 00:08:04,190 konsolerna. 141 00:08:04,190 --> 00:08:08,650 Jag är inte, faktiskt, ganska säker på om Jag syntaktiskt hårdkodad en matris 142 00:08:08,650 --> 00:08:16,020 korrekt för C-versionen, men det är tänkt att vara i en C-array. 143 00:08:16,020 --> 00:08:19,760 >> Så detta är hur du vill, du vet, kanske använda av funktioner eller 144 00:08:19,760 --> 00:08:21,990 metoder som vi skapade tidigare. 145 00:08:21,990 --> 00:08:22,250 Rätt? 146 00:08:22,250 --> 00:08:25,340 Så, det är där vi förklarar vår funktion och vår metod. 147 00:08:25,340 --> 00:08:28,020 Och nu vill vi använda dem i vårt program, och det är 148 00:08:28,020 --> 00:08:29,450 hur vi skulle göra det. 149 00:08:29,450 --> 00:08:32,400 Så i C, skulle du ha, du vet, kanske en bool b, och du ställa in den på 150 00:08:32,400 --> 00:08:36,549 lika med funktionen, och sedan du passerar i argumenten. 151 00:08:36,549 --> 00:08:39,190 >> I Objective-C, det är ganska ungefär samma sak. 152 00:08:39,190 --> 00:08:43,370 Du har NSArray * my_array, och det är kommer att vara lika - nu, det enda 153 00:08:43,370 --> 00:08:47,460 Skillnaden här är detta objekt sak, som jag har markerat i gult, och 154 00:08:47,460 --> 00:08:51,180 som ni kan se, i C, det finns ingen annan gul ord. 155 00:08:51,180 --> 00:08:54,170 Och det är för att metoder tillhör med ett visst objekt. 156 00:08:54,170 --> 00:08:59,800 Så det är därför jag måste ha ett objekt att, liksom, kallar denna metod på 157 00:08:59,800 --> 00:09:04,360 siffran noll, och sedan den NSArray a, b, c, d. 158 00:09:04,360 --> 00:09:05,350 Har du frågor om det? 159 00:09:05,350 --> 00:09:12,190 >> Vi får se dessa begrepp i handling ganska snart när vi går in i en demo. 160 00:09:12,190 --> 00:09:13,400 OK. 161 00:09:13,400 --> 00:09:17,170 Nu vill jag prata lite kort om Xcode 5, som är den 162 00:09:17,170 --> 00:09:21,160 integrerad utvecklingsmiljö att du kommer att arbeta med. 163 00:09:21,160 --> 00:09:26,160 Jag vet att många av er, eller några av er, inte har Mac, vilket är ett problem 164 00:09:26,160 --> 00:09:30,490 eftersom Xcode är ej tillgängligt för Windows och PC. 165 00:09:30,490 --> 00:09:32,785 Fråga mig inte varför, men förmodligen - 166 00:09:32,785 --> 00:09:33,730 ja, corporate. 167 00:09:33,730 --> 00:09:35,290 Oavsett vad. 168 00:09:35,290 --> 00:09:39,360 Men hur som helst, så jag ber om ursäkt om någon av du behöver ladda ner någon form av 169 00:09:39,360 --> 00:09:43,000 virtuell maskin för Mac i För att kunna köra Xcode 5. 170 00:09:43,000 --> 00:09:46,460 Men det är en ganska tjusig programvara att använda. 171 00:09:46,460 --> 00:09:51,280 >> Och så, innan vi dyker in något slag av demo, jag vill bara visa dig en 172 00:09:51,280 --> 00:09:55,700 bild av vad Xcode ser ut i din fönster, och sedan också tala om 173 00:09:55,700 --> 00:09:57,670 vad hela detta utrymme är. 174 00:09:57,670 --> 00:10:01,600 Så det är ungefär som att lära sig att använda Microsoft Word, utom du vill 175 00:10:01,600 --> 00:10:04,675 få bekanta sig med alla olika saker som 176 00:10:04,675 --> 00:10:06,250 pågår här. 177 00:10:06,250 --> 00:10:11,160 >> Så först, jag vill peka dig i verktygsfältet i toppen. 178 00:10:11,160 --> 00:10:14,450 Du ser att, i toppen, du har filnamnet - 179 00:10:14,450 --> 00:10:18,100 eller, faktiskt, din projektnamn och sedan ditt filnamn. 180 00:10:18,100 --> 00:10:20,940 Ta del av pjäsen och stoppknappar. 181 00:10:20,940 --> 00:10:24,210 De är de som du kommer att använder för att köra din app på 182 00:10:24,210 --> 00:10:25,600 simulator - 183 00:10:25,600 --> 00:10:26,550 iOS simulatorn. 184 00:10:26,550 --> 00:10:29,940 Detta kommer automatiskt med Xcode 5, så du behöver inte oroa dig för 185 00:10:29,940 --> 00:10:32,070 ladda ner något slags simulator. 186 00:10:32,070 --> 00:10:34,700 Du trycker bara lek och då det körs din app. 187 00:10:34,700 --> 00:10:39,230 Och du kan leka med dig, och ser du hur det fungerar senare. 188 00:10:39,230 --> 00:10:42,690 >> Och sedan, i centrum, är naturligtvis där alla dina vackra kod är 189 00:10:42,690 --> 00:10:44,240 kommer att gå. 190 00:10:44,240 --> 00:10:48,340 Och sedan, på vänster sida, kommer du har detta, liksom, mapp - 191 00:10:48,340 --> 00:10:50,340 navigering - 192 00:10:50,340 --> 00:10:53,970 och då kommer du också se att, tillsammans med mappikonen, det finns en 193 00:10:53,970 --> 00:10:57,680 massa andra ikoner där som kommer att vara användbart senare. 194 00:10:57,680 --> 00:11:04,710 >> Och sedan, på den högra sidan är ett verktyg område där man kan arbeta med 195 00:11:04,710 --> 00:11:09,620 några av objekten och anger, du vet, vad färgen ska vara, vad 196 00:11:09,620 --> 00:11:12,040 teckensnitt ska vara, et cetera. 197 00:11:12,040 --> 00:11:15,890 Även om, allt som du gör i tvättstuga kan du 198 00:11:15,890 --> 00:11:17,480 gör i koden också. 199 00:11:17,480 --> 00:11:21,630 Och så kommer jag att gå igenom två exempel på att använda, helt enkelt, ingen kod på 200 00:11:21,630 --> 00:11:23,730 alla - eller mycket minimal kod - 201 00:11:23,730 --> 00:11:28,290 verser all kod, bara så att ni vet vad du kan och inte kan göra i 202 00:11:28,290 --> 00:11:29,260 Xcode och Objective-C. 203 00:11:29,260 --> 00:11:32,770 >> Och sedan, slutligen ned i botten, du har debug området. 204 00:11:32,770 --> 00:11:37,270 Så, behöver du inte längre köra GDB, et cetera, på dina program. 205 00:11:37,270 --> 00:11:39,180 Det gör det automatiskt åt dig. 206 00:11:39,180 --> 00:11:42,880 Och du kan också skriva ut saker till detta område. 207 00:11:42,880 --> 00:11:46,790 Så egentligen, senare, vi ska gå igenom mario.c, om ni fortfarande minns 208 00:11:46,790 --> 00:11:49,000 att i Xcode. 209 00:11:49,000 --> 00:11:50,360 Så det skulle vara kul. 210 00:11:50,360 --> 00:11:55,870 >> Och sedan, bara för att få den tillbaka till Objective-C, jag vill lyfta fram vad 211 00:11:55,870 --> 00:11:57,440 du kan göra med if-satser. 212 00:11:57,440 --> 00:12:03,160 Så, vet ni, eftersom Objective-C är en superset av C, allt du gör är, 213 00:12:03,160 --> 00:12:06,890 bokstavligen, på samma sätt som C. Du bara har små skillnader. 214 00:12:06,890 --> 00:12:10,810 Så, kommer du att märka i form för en om uttalande är fortfarande detsamma - du har 215 00:12:10,810 --> 00:12:14,280 om, och då har du parenteser med ett tillstånd inuti, det och sedan 216 00:12:14,280 --> 00:12:17,150 klammerparenteserna för vad du vill göra inne i det. 217 00:12:17,150 --> 00:12:21,680 >> Men jag ville sätta denna bild upp här, helt enkelt för att illustrera att, 218 00:12:21,680 --> 00:12:25,680 eftersom vi har att göra med objekt nu, Vi måste använda dessa saker 219 00:12:25,680 --> 00:12:31,240 heter som är lika sträng som är en tillfällighet, en metod för en 220 00:12:31,240 --> 00:12:33,710 sträng eller ett NSString objektet. 221 00:12:33,710 --> 00:12:38,600 Så, ord, i det här fallet är en NSString invändningar, och den har en metod som kallas är 222 00:12:38,600 --> 00:12:44,150 lika sträng, och då vi passerar i en hårdkodad sträng för att se 223 00:12:44,150 --> 00:12:48,110 oavsett om de är lika till en annan. 224 00:12:48,110 --> 00:12:51,580 >> Har du frågor så långt? 225 00:12:51,580 --> 00:12:52,440 OK. 226 00:12:52,440 --> 00:12:56,190 Och, jag vill gå över en för uttalande också. 227 00:12:56,190 --> 00:13:01,420 >> Så, till exempel, om vi ville slinga över längden av en sträng i C, detta 228 00:13:01,420 --> 00:13:03,710 bör vara bekant för dig. 229 00:13:03,710 --> 00:13:07,840 Och, i Objective-C, jag vill att belysa detta, liksom, 230 00:13:07,840 --> 00:13:09,235 metod som kallas räkningen. 231 00:13:09,235 --> 00:13:13,260 232 00:13:13,260 --> 00:13:15,550 Jo, faktiskt, låt mig bara ta det tillbaka. 233 00:13:15,550 --> 00:13:17,200 Greven är en metod för matris. 234 00:13:17,200 --> 00:13:21,070 Men det är mer specifikt en egenskap av array, vilket är varför du 235 00:13:21,070 --> 00:13:22,380 kan använda punktnotation. 236 00:13:22,380 --> 00:13:25,870 Men jag vill inte komma in för mycket av det konceptuella grejer, jag vill bara 237 00:13:25,870 --> 00:13:30,140 visa hur det skulle se ut som i Objective-C kontra C. 238 00:13:30,140 --> 00:13:35,400 >> Och också, vill jag påpeka att även om jag har använt NSUInteger 239 00:13:35,400 --> 00:13:39,860 framför alla mina i-talet i Objective-C, Du kan också använda int, eftersom int är 240 00:13:39,860 --> 00:13:42,290 helt giltig i Objective-C, också. 241 00:13:42,290 --> 00:13:42,475 Ja? 242 00:13:42,475 --> 00:13:44,350 >> PUBLIK: Är det bara stilistiska, eller är - 243 00:13:44,350 --> 00:13:44,760 >> RHED SHI: Ja. 244 00:13:44,760 --> 00:13:46,060 Så, som ni ser - 245 00:13:46,060 --> 00:13:49,390 så var frågan är att bara en stilistisk fråga. 246 00:13:49,390 --> 00:13:54,820 Som ni ser, jag har en, slags, stjärna asterisk sak nere på botten, och 247 00:13:54,820 --> 00:13:59,870 som länk tar dig till en Stack Overflow bildas, där någon förklarar 248 00:13:59,870 --> 00:14:03,640 skillnaden mellan en int i NSInteger och en NSUInteger. 249 00:14:03,640 --> 00:14:05,540 Och så kan du läsa om det senare. 250 00:14:05,540 --> 00:14:07,640 Dessa bilder kommer att finnas, naturligtvis, tillgängliga för dig. 251 00:14:07,640 --> 00:14:10,300 252 00:14:10,300 --> 00:14:11,280 >> Låt oss se. 253 00:14:11,280 --> 00:14:12,150 OK, awesome. 254 00:14:12,150 --> 00:14:15,410 Så, detta ingår också i bilden eftersom jag trodde att detta var en stor 255 00:14:15,410 --> 00:14:19,370 webbplats som introducerar dig till Objective-C syntax. 256 00:14:19,370 --> 00:14:24,410 Så, egentligen, varför inte vi flyttar till Krom och kolla in den här webbplatsen? 257 00:14:24,410 --> 00:14:30,650 258 00:14:30,650 --> 00:14:31,300 >> Rätt. 259 00:14:31,300 --> 00:14:36,670 Så, vad jag vill visa dig killarna här är denna bild. 260 00:14:36,670 --> 00:14:41,630 Så, det är, liksom, kommer att vara det som du kommer att se insidan av varje 261 00:14:41,630 --> 00:14:42,890 Xcode fil. 262 00:14:42,890 --> 00:14:47,400 263 00:14:47,400 --> 00:14:51,430 Egentligen, varför inte vi bara ta en ögonblick, slags, ta i. 264 00:14:51,430 --> 00:14:53,470 >> Så, den här boken - 265 00:14:53,470 --> 00:14:55,880 det är det objekt som vi har att göra med. 266 00:14:55,880 --> 00:14:59,680 Och sedan, det är självklart att vara ärvt från något annat föremål, men 267 00:14:59,680 --> 00:15:01,810 du behöver inte oroa dig för det. 268 00:15:01,810 --> 00:15:04,430 Och sedan, det kanske har vissa medlemsvariabler. 269 00:15:04,430 --> 00:15:09,160 >> Det viktigaste jag vill visa dig är de metoder som t.ex. här. 270 00:15:09,160 --> 00:15:12,670 Så är exempelvis metoder betecknas genom denna minustecken. 271 00:15:12,670 --> 00:15:15,550 Och sedan, som ni kommer att märka, vi är redan börjar se paradigmet 272 00:15:15,550 --> 00:15:17,670 för metoddeklaration, eller hur? 273 00:15:17,670 --> 00:15:22,670 Typen retur, metodnamnet, och sedan typ av argumentet, och 274 00:15:22,670 --> 00:15:24,660 sedan namnet på argumentet. 275 00:15:24,660 --> 00:15:29,090 Och detta minustecken betyder att det är en instansmetod, vilket innebär att 276 00:15:29,090 --> 00:15:32,270 dessa metoder är endast tillgängliga för objekt som har instansieras. 277 00:15:32,270 --> 00:15:35,050 278 00:15:35,050 --> 00:15:39,100 >> Att kontrastera det, metoder med ett plus logga in framför dem är klass 279 00:15:39,100 --> 00:15:43,640 metoder, vilket innebär att du kan ringa dessa metoder, även om du inte har 280 00:15:43,640 --> 00:15:45,970 ett föremål skapade ännu. 281 00:15:45,970 --> 00:15:51,600 Så, för ett tydligt exempel, NSString är en klass. 282 00:15:51,600 --> 00:15:55,850 Och du kan ringa, till exempel, klassmetoder på NSString - 283 00:15:55,850 --> 00:15:58,660 själva, liksom, ord NSString. 284 00:15:58,660 --> 00:16:02,050 >> Emellertid, i syfte att använda dessa metoder, du faktiskt 285 00:16:02,050 --> 00:16:03,460 behöver skapa en sträng. 286 00:16:03,460 --> 00:16:08,980 Exempelvis motsvarar NSString stjärna sträng vid citattecken, hallå världen. 287 00:16:08,980 --> 00:16:10,910 Och sedan kan du använda dessa metoder - 288 00:16:10,910 --> 00:16:11,990 förekomstmetoder - 289 00:16:11,990 --> 00:16:14,790 på att hello world sträng. 290 00:16:14,790 --> 00:16:17,825 Så, det är skillnaden mellan förekomstmetoder och klassmetoder. 291 00:16:17,825 --> 00:16:20,390 292 00:16:20,390 --> 00:16:21,930 >> Och, precis täckte vi denna del. 293 00:16:21,930 --> 00:16:25,300 294 00:16:25,300 --> 00:16:33,750 Fastigheter är en annan sak som är insidan av objekt, i grund och botten. 295 00:16:33,750 --> 00:16:37,530 Och du deklarera dem med det vid fastighets nyckelordet. 296 00:16:37,530 --> 00:16:39,940 Du har dessa alternativ, här, att jag ska förklara senare när 297 00:16:39,940 --> 00:16:43,110 Vi går in i en demo. 298 00:16:43,110 --> 00:16:43,660 Ja? 299 00:16:43,660 --> 00:16:43,950 Hej. 300 00:16:43,950 --> 00:16:45,440 >> PUBLIK: Kan du zooma in, tack? 301 00:16:45,440 --> 00:16:46,130 >> RHED SHI: Oh ja. 302 00:16:46,130 --> 00:16:46,560 Ursäkta. 303 00:16:46,560 --> 00:16:49,140 >> PUBLIK: Tack. 304 00:16:49,140 --> 00:16:50,005 >> RHED SHI: Det borde vara mycket bättre. 305 00:16:50,005 --> 00:16:51,240 >> PUBLIK: Ja. 306 00:16:51,240 --> 00:16:53,940 Tack. 307 00:16:53,940 --> 00:16:56,815 >> RHED SHI: Ja, påminn mig om Jag glömmer att zooma in eller zooma ut. 308 00:16:56,815 --> 00:17:00,590 309 00:17:00,590 --> 00:17:03,570 Så detta är allt jag ville ha visa för - 310 00:17:03,570 --> 00:17:05,970 whoa, det är en hel del - 311 00:17:05,970 --> 00:17:06,790 för denna webbplats. 312 00:17:06,790 --> 00:17:12,210 Så, låt oss gå tillbaka till våra bilder. 313 00:17:12,210 --> 00:17:17,819 >> Faktiskt, nu ska vi ta en stund att dyka in en demo. 314 00:17:17,819 --> 00:17:25,490 Så börjar vi med en ny Xcode projektet. 315 00:17:25,490 --> 00:17:33,040 Så, om du ska öppna upp Xcode på alla dina maskiner, bör det ta dig några 316 00:17:33,040 --> 00:17:36,720 där det står, liksom, antingen öppna upp ett befintligt projekt eller en ny 317 00:17:36,720 --> 00:17:39,230 projekt, och du bör Klicka på ett nytt projekt. 318 00:17:39,230 --> 00:17:41,477 Och då bör det ta dig till den här skärmen. 319 00:17:41,477 --> 00:17:41,593 Ja? 320 00:17:41,593 --> 00:17:44,279 >> PUBLIK: Om vi ​​inte har en Mac, vi bara typ av kyla? 321 00:17:44,279 --> 00:17:46,870 >> RHED SHI: Eller titta på med någon, ja. 322 00:17:46,870 --> 00:17:47,740 Yeah. 323 00:17:47,740 --> 00:17:50,660 Du kan kyla också. 324 00:17:50,660 --> 00:17:51,570 OK. 325 00:17:51,570 --> 00:17:55,410 >> Så, vad vi ska göra först, nu, är, faktiskt, kommer vi att göra en 326 00:17:55,410 --> 00:17:56,600 enda vy ansökan. 327 00:17:56,600 --> 00:18:01,340 Så, om du kommer att märka, vad som är bra om Xcode och Apple stöd för 328 00:18:01,340 --> 00:18:05,690 utvecklare är att du har en hel del mallar för att arbeta med redan. 329 00:18:05,690 --> 00:18:09,210 Du kan till exempel göra en master-detalj ansökan. 330 00:18:09,210 --> 00:18:10,920 Du kan göra ett spel - 331 00:18:10,920 --> 00:18:13,860 och faktiskt, kommer jag inte att gå in i spel, eftersom spel är en annan historia 332 00:18:13,860 --> 00:18:15,320 för iOS utveckling. 333 00:18:15,320 --> 00:18:18,930 Och de är typ av separata, så jag ska inte gå in på det. 334 00:18:18,930 --> 00:18:22,580 >> Då du har sida-baserade applikationer. 335 00:18:22,580 --> 00:18:24,010 Du har en flik ansökan - 336 00:18:24,010 --> 00:18:29,350 så vill, till exempel Bank of America antagligen har, liksom, ett flikar app. 337 00:18:29,350 --> 00:18:32,140 Det är de där du har knapparna längst ner. 338 00:18:32,140 --> 00:18:34,750 Och sedan har du en Sprite Kit spel. 339 00:18:34,750 --> 00:18:38,670 >> Eller du kan arbeta från grunden, vilket är vad vi ska göra senare. 340 00:18:38,670 --> 00:18:42,470 Men låt oss först börja med en enda vy ansökan. 341 00:18:42,470 --> 00:18:48,590 Sedan ska det begära att ett produktnamn, och vi kan bara göra testet. 342 00:18:48,590 --> 00:18:50,190 Organisation namn - 343 00:18:50,190 --> 00:18:54,140 så, företagsnamn, företagsidentifiering - 344 00:18:54,140 --> 00:18:58,100 de är viktiga om du ska att sätta din app på App Store. 345 00:18:58,100 --> 00:19:01,110 346 00:19:01,110 --> 00:19:05,116 Annat än det, är din kod kommer att kör alldeles utmärkt utan denna. 347 00:19:05,116 --> 00:19:09,940 >> Detta kommer att vara viktigt om du vill - så, i sig, liksom, sätta din app 348 00:19:09,940 --> 00:19:14,080 till din telefon eller något, och testet ut det, du vet, i verkliga livet - 349 00:19:14,080 --> 00:19:15,360 detta kommer att vara viktigt. 350 00:19:15,360 --> 00:19:20,110 Detta tenderar att vanligtvis vara associerad med någon form av utvecklarkonto 351 00:19:20,110 --> 00:19:20,970 med Apple. 352 00:19:20,970 --> 00:19:24,740 >> Och så, jag vet, förmodligen, en hel del av er kommer inte ha några utvecklarkonton. 353 00:19:24,740 --> 00:19:26,460 Jag vet att universitetet har en. 354 00:19:26,460 --> 00:19:27,630 Jag tror att CS har en. 355 00:19:27,630 --> 00:19:32,770 Men, kan du maila mig och jag ska försöka att räkna ut det åt dig. 356 00:19:32,770 --> 00:19:38,210 Men just nu har jag bara sätta in några platshållare saker här. 357 00:19:38,210 --> 00:19:41,250 >> Och du kan naturligtvis här, välj om du vill att det ska vara enbart 358 00:19:41,250 --> 00:19:44,410 iPhone, i iPad eller båda - 359 00:19:44,410 --> 00:19:46,630 universell tillämpning. 360 00:19:46,630 --> 00:19:56,170 Så, för nu, låt oss göra universella, precis att se båda sidorna av plattformen. 361 00:19:56,170 --> 00:19:57,120 >> Låt oss se. 362 00:19:57,120 --> 00:20:01,510 Så, just nu, jag ska spara det i någon form av mapp. 363 00:20:01,510 --> 00:20:04,500 Spelar ingen roll var - du kan alltid flytta den senare. 364 00:20:04,500 --> 00:20:09,380 Och, nu är vi fört i vårt Xcode projektet. 365 00:20:09,380 --> 00:20:12,890 Jag skulle inte oroa sig för allt detta. 366 00:20:12,890 --> 00:20:17,510 Jag skulle föreslå att inte vidröra någon av detta, om du inte vet exakt vad 367 00:20:17,510 --> 00:20:18,260 du gör. 368 00:20:18,260 --> 00:20:21,750 Så, allt detta, bara ignorera för det mesta. 369 00:20:21,750 --> 00:20:26,940 Du behöver inte röra den, och om du du förstöra vissa saker här, det 370 00:20:26,940 --> 00:20:28,600 blir lite knepigt. 371 00:20:28,600 --> 00:20:32,480 >> Så, varför inte vi titta på filerna på 372 00:20:32,480 --> 00:20:34,700 vänster sida i vår navigator. 373 00:20:34,700 --> 00:20:37,060 Här har vi AppDelegate.h. 374 00:20:37,060 --> 00:20:43,430 Vi har AppDelegate.m Så, som du kommer varsel, har vi header-filer, som 375 00:20:43,430 --> 00:20:45,720 sluta i dot h, och vi har genomförande - 376 00:20:45,720 --> 00:20:46,970 faktiskt, låt mig zooma in 377 00:20:46,970 --> 00:20:56,270 378 00:20:56,270 --> 00:20:57,060 OK. 379 00:20:57,060 --> 00:20:59,940 Låt mig zooma in 380 00:20:59,940 --> 00:21:05,810 >> Rätt, så du har header-filer och du har implementeringsfiler. 381 00:21:05,810 --> 00:21:07,060 Faktiskt - 382 00:21:07,060 --> 00:21:08,680 383 00:21:08,680 --> 00:21:09,240 OK. 384 00:21:09,240 --> 00:21:11,800 Det är lite konstigt, men bär med mig. 385 00:21:11,800 --> 00:21:16,140 Sedan, för att vi har valt en enda vy ansökan, vi kommer att vara 386 00:21:16,140 --> 00:21:17,340 arbeta med storyboard. 387 00:21:17,340 --> 00:21:22,140 >> Så, är storyboard något som Apple har kommit med för att verkligen hjälpa 388 00:21:22,140 --> 00:21:26,550 utvecklare snabbt skapa prototyper sina ansökningar. 389 00:21:26,550 --> 00:21:29,410 Så, det är här du kan skapa en app utan att skriva en 390 00:21:29,410 --> 00:21:31,710 enda rad kod. 391 00:21:31,710 --> 00:21:35,390 Men i vår enda vy ansökan, vi naturligtvis ha en 392 00:21:35,390 --> 00:21:41,270 filen för vår uppfattning, vilket är en vy som regulator. 393 00:21:41,270 --> 00:21:45,150 Så, har vi huvudet och genomförande fil här. 394 00:21:45,150 --> 00:21:52,350 >> Och, jag kommer att zooma ut nu eftersom Vi måste arbeta på storyboard. 395 00:21:52,350 --> 00:21:55,190 Så, här är vår uppfattning. 396 00:21:55,190 --> 00:22:00,120 Om vi ​​helt enkelt köra appen just nu, det finns inte mycket spännande på gång. 397 00:22:00,120 --> 00:22:03,270 398 00:22:03,270 --> 00:22:05,040 Så, ser du denna vit skärm. 399 00:22:05,040 --> 00:22:06,110 OK? 400 00:22:06,110 --> 00:22:14,010 >> Och i våra verktyg område, kan vi lägga till en massa olika saker för det. 401 00:22:14,010 --> 00:22:19,290 Så, när du arbetar med skärmar i iOS, granska styrenheter är 402 00:22:19,290 --> 00:22:23,150 objekt som kapslar in, slags, dina åsikter. 403 00:22:23,150 --> 00:22:26,980 Så, en vy controller alltid har en egenskap som kallas vy. 404 00:22:26,980 --> 00:22:29,610 Och denna uppfattning, typiskt, innehåller, du vet, vad du 405 00:22:29,610 --> 00:22:30,810 vill se på en skärm. 406 00:22:30,810 --> 00:22:39,210 >> Så, ja, låt oss bara börja med att sätta, kanske, kanske en etikett. 407 00:22:39,210 --> 00:22:41,450 Så, låt oss sätta en etikett på det - 408 00:22:41,450 --> 00:22:44,080 sticka den i mitten. 409 00:22:44,080 --> 00:22:49,560 Så, nu när jag har klickat på etiketten, jag kan gå in på egenskaper inspektör 410 00:22:49,560 --> 00:22:51,510 och börja ändra dess värde. 411 00:22:51,510 --> 00:22:55,040 Låt oss kalla det CS50 Colours. 412 00:22:55,040 --> 00:22:58,220 >> Och, jag kan också ändra typsnitt. 413 00:22:58,220 --> 00:23:02,630 Så, istället för att göra systemet, som är standard, kan vi göra en egen man. 414 00:23:02,630 --> 00:23:03,770 Vi kan förändra - 415 00:23:03,770 --> 00:23:06,453 ni vet, Ultralight, gör den 32. 416 00:23:06,453 --> 00:23:09,000 417 00:23:09,000 --> 00:23:11,370 Och då kan vi göra vår box större. 418 00:23:11,370 --> 00:23:14,410 >> PUBLIK: Tror du att du kan zooma på bara lite mer, kanske? 419 00:23:14,410 --> 00:23:14,810 >> RHED SHI: Ja? 420 00:23:14,810 --> 00:23:16,196 OK. 421 00:23:16,196 --> 00:23:17,450 >> PUBLIK: Tryck bara på den? 422 00:23:17,450 --> 00:23:19,020 >> RHED SHI: Låt oss se. 423 00:23:19,020 --> 00:23:20,382 Fungerar det? 424 00:23:20,382 --> 00:23:22,270 >> PUBLIK: Bara passera Xcode? 425 00:23:22,270 --> 00:23:23,520 >> RHED SHI: Visst. 426 00:23:23,520 --> 00:23:25,620 427 00:23:25,620 --> 00:23:25,940 OK. 428 00:23:25,940 --> 00:23:26,275 Awesome. 429 00:23:26,275 --> 00:23:27,072 >> PUBLIK: Etiketten under? 430 00:23:27,072 --> 00:23:28,920 Etiketten? 431 00:23:28,920 --> 00:23:29,480 >> RHED SHI: Vad är det? 432 00:23:29,480 --> 00:23:32,050 >> PUBLIK: Vilken list var etiketten under? 433 00:23:32,050 --> 00:23:35,170 >> RHED SHI: Så frågan var, vad drop-down var etiketten under? 434 00:23:35,170 --> 00:23:37,260 Det ska helt enkelt vara under här. 435 00:23:37,260 --> 00:23:39,330 Jag antar att det är en kub sak. 436 00:23:39,330 --> 00:23:40,910 Men oftast är det standard - 437 00:23:40,910 --> 00:23:43,250 Jag ska bara ner här tills jag hittar en etikett. 438 00:23:43,250 --> 00:23:45,800 439 00:23:45,800 --> 00:23:47,730 Yeah. 440 00:23:47,730 --> 00:23:48,950 >> Så nu har vi vår etikett. 441 00:23:48,950 --> 00:23:51,040 Låt oss centrera den. 442 00:23:51,040 --> 00:23:56,410 Och Xcode ger oss riktlinjer för centre objekt. 443 00:23:56,410 --> 00:23:59,510 444 00:23:59,510 --> 00:24:01,480 Så, nu ska vi köra vår kod igen. 445 00:24:01,480 --> 00:24:08,110 446 00:24:08,110 --> 00:24:08,800 >> Så där. 447 00:24:08,800 --> 00:24:10,310 Så, har vi CS50 Colours. 448 00:24:10,310 --> 00:24:13,720 449 00:24:13,720 --> 00:24:15,420 Och nu, låt oss sätta en knapp på det, eller hur? 450 00:24:15,420 --> 00:24:17,480 Eftersom vi vill göra denna interaktiva. 451 00:24:17,480 --> 00:24:19,410 Så, låt oss sätta en knapp här. 452 00:24:19,410 --> 00:24:39,020 Och vi kallar den här knappen "peka här att fortsätta. "Vi ska centrera den, även 453 00:24:39,020 --> 00:24:39,990 Egentligen är det redan centrerad. 454 00:24:39,990 --> 00:24:40,630 Yeah. 455 00:24:40,630 --> 00:24:43,130 >> Så, nu har vi en knapp. 456 00:24:43,130 --> 00:24:53,000 Och om vi kör det här igen, vi ska att ha en fin liten knapp här. 457 00:24:53,000 --> 00:24:56,520 Och jag kan klicka på den, men det gör inte någonting, för vi har inte gjort 458 00:24:56,520 --> 00:24:58,500 vad som helst med knappen ännu. 459 00:24:58,500 --> 00:25:01,740 >> Så, låt oss skapa en annan uppfattning, eller hur? 460 00:25:01,740 --> 00:25:04,160 Så, låt oss säga att jag vill peka den knappen och jag vill 461 00:25:04,160 --> 00:25:05,730 gå till en annan sida - 462 00:25:05,730 --> 00:25:06,820 en annan uppfattning. 463 00:25:06,820 --> 00:25:14,440 Vad jag ska göra är, kan jag skapa en vy controller, eller hur? 464 00:25:14,440 --> 00:25:19,690 Nu ska jag klickar på min knapp, och sedan, det viktiga är, jag ska 465 00:25:19,690 --> 00:25:20,910 Klicka på - eller - 466 00:25:20,910 --> 00:25:23,660 ja, tryck på kontroll på mitt tangentbord. 467 00:25:23,660 --> 00:25:24,880 Control. 468 00:25:24,880 --> 00:25:27,005 Klicka på knappen och sedan dra. 469 00:25:27,005 --> 00:25:29,960 470 00:25:29,960 --> 00:25:33,550 >> Så kom ihåg att hålla Ctrl-tangenten. 471 00:25:33,550 --> 00:25:35,160 Låt oss göra det igen. 472 00:25:35,160 --> 00:25:40,930 Så, håll kontroll, klicka och dra vad du vill göra. 473 00:25:40,930 --> 00:25:41,520 OK. 474 00:25:41,520 --> 00:25:43,610 >> Och nu, jag har flera alternativ här. 475 00:25:43,610 --> 00:25:47,900 Jag kan antingen skjuta, eller jag kan göra en modal, eller jag kan göra en egen. 476 00:25:47,900 --> 00:25:50,900 Push är bara om du har en navigationskontrollen. 477 00:25:50,900 --> 00:25:54,270 Just nu, vår första uppfattning styrenheten är inte inne i något 478 00:25:54,270 --> 00:25:55,610 navigationskontrollen. 479 00:25:55,610 --> 00:25:59,500 Så, är det navigationskontrollen den som ger dig bakåtknappen på 480 00:25:59,500 --> 00:26:03,910 iOS-app där du har, du vet, det toppen, typ av, tjock bar - 481 00:26:03,910 --> 00:26:06,480 där du kan gå tillbaka, eller framåt, et cetera. 482 00:26:06,480 --> 00:26:07,740 Just nu, jag har inte det. 483 00:26:07,740 --> 00:26:11,050 Och så, det är därför jag inte kan göra en push. 484 00:26:11,050 --> 00:26:12,480 >> Så jag klickade på tryck misstag här. 485 00:26:12,480 --> 00:26:16,480 Och faktiskt, låt oss köra koden, och den ska krascha på mig. 486 00:26:16,480 --> 00:26:19,770 487 00:26:19,770 --> 00:26:22,960 Bara om jag trycker på knappen dock så - 488 00:26:22,960 --> 00:26:23,420 höger. 489 00:26:23,420 --> 00:26:26,480 Så detta är dåligt. 490 00:26:26,480 --> 00:26:31,330 >> Och, som ni kan se här, vi har felmeddelandet. 491 00:26:31,330 --> 00:26:35,460 Så, "Push segues kan endast användas när käll controller förvaltas av ett 492 00:26:35,460 --> 00:26:40,700 instans av UI navigering controller. " Så, eftersom det inte var inne i en 493 00:26:40,700 --> 00:26:44,030 navigation controller, Jag kunde inte göra det. 494 00:26:44,030 --> 00:26:48,782 >> Så, just nu, jag ska tillbaka till mapp, går tillbaka till storyboard. 495 00:26:48,782 --> 00:26:51,680 >> PUBLIK: Vad är det för navigering controller, igen? 496 00:26:51,680 --> 00:26:55,260 >> RHED SHI: Så, nu ska jag visa dig. 497 00:26:55,260 --> 00:26:56,200 Låt oss se. 498 00:26:56,200 --> 00:27:00,510 Så, jag ska klicka på denna uppfattning controller, och sedan ska jag gå 499 00:27:00,510 --> 00:27:03,920 upp till produkt - 500 00:27:03,920 --> 00:27:06,240 faktiskt, nej, förlåt - redaktör. 501 00:27:06,240 --> 00:27:08,360 Och jag kommer att gå in i - 502 00:27:08,360 --> 00:27:09,350 faktiskt, jag klickar på den? 503 00:27:09,350 --> 00:27:10,070 Nej. 504 00:27:10,070 --> 00:27:11,080 Så där. 505 00:27:11,080 --> 00:27:16,270 Jag kommer att gå upp i editorn, gå ner bädda in, och sedan navigering 506 00:27:16,270 --> 00:27:17,520 styrenheten. 507 00:27:17,520 --> 00:27:20,130 508 00:27:20,130 --> 00:27:20,720 >> OK. 509 00:27:20,720 --> 00:27:27,750 Och ser min arbetsyta riktigt rörigt, så låt oss rensa upp här. 510 00:27:27,750 --> 00:27:29,000 Så, är allt detta storyboard. 511 00:27:29,000 --> 00:27:32,510 512 00:27:32,510 --> 00:27:33,760 Och på detta sätt - 513 00:27:33,760 --> 00:27:37,030 514 00:27:37,030 --> 00:27:38,280 OK, stopp - 515 00:27:38,280 --> 00:27:49,320 516 00:27:49,320 --> 00:27:50,860 Jag kan snabbt bygga något så här. 517 00:27:50,860 --> 00:27:53,020 Och då, nu kan jag gå tillbaka, du vet? 518 00:27:53,020 --> 00:27:55,730 >> Men det är ganska tråkigt, eller hur? 519 00:27:55,730 --> 00:28:03,020 Så, vad jag vill göra är, jag vill inte ha att tillverka, helt enkelt, i syfte 520 00:28:03,020 --> 00:28:03,870 styrenheten. 521 00:28:03,870 --> 00:28:07,720 Låt oss säga att jag ville faktiskt göra en tabellvyn controller, så jag kan sätta in 522 00:28:07,720 --> 00:28:12,110 några trevliga färger i tabellen. 523 00:28:12,110 --> 00:28:16,210 >> Så, nu när jag har lagt i min tabell vy controller, jag måste ansluta den tillbaka 524 00:28:16,210 --> 00:28:18,560 från den här knappen till view controller. 525 00:28:18,560 --> 00:28:21,780 Så jag måste göra min kontroll, klicka, dra sak igen. 526 00:28:21,780 --> 00:28:27,318 Och nu kan jag göra push, eftersom jag bädda det inne i ett navigationskontrollen. 527 00:28:27,318 --> 00:28:32,210 >> PUBLIK: Navigation controller bara gör det möjligt att gå från plats till plats? 528 00:28:32,210 --> 00:28:33,540 >> RHED SHI: Ja. 529 00:28:33,540 --> 00:28:38,670 Så, mer tekniskt, det är ett föremål där - 530 00:28:38,670 --> 00:28:43,150 så, insidan av navigeringen styrenhetsobjekt, det 531 00:28:43,150 --> 00:28:44,780 håller reda på en array. 532 00:28:44,780 --> 00:28:48,300 Och att arrayen innehåller alla efterföljande visa controllers. 533 00:28:48,300 --> 00:28:51,560 Det är därför som när du trycker tillbaka, det går tillbaka till föregående sida. 534 00:28:51,560 --> 00:28:55,260 Eftersom navigationskontrollen objektet eller koden som tar hand om 535 00:28:55,260 --> 00:28:58,890 detta objekt, har en array som håller spår av dessa view styrenheter, och 536 00:28:58,890 --> 00:29:01,870 kan då, du vet, DQ utsikten controller och ge dig tillbaka 537 00:29:01,870 --> 00:29:02,750 föregående. 538 00:29:02,750 --> 00:29:05,200 >> Så, är det tekniska saker, men - 539 00:29:05,200 --> 00:29:07,505 och jag ska visa dig senare i kod, om vi har tid. 540 00:29:07,505 --> 00:29:10,270 Jag är snäll att köra ut i tid, men - 541 00:29:10,270 --> 00:29:15,610 >> Så, med tabellvyn, vad vi kan göra är - 542 00:29:15,610 --> 00:29:18,440 Det är oftast automatiskt till Dynamic Prototype - 543 00:29:18,440 --> 00:29:20,640 vi kommer att göra det statiska celler, annars ska vi 544 00:29:20,640 --> 00:29:22,920 stöter på några problem. 545 00:29:22,920 --> 00:29:28,470 >> Och sedan, låt oss säga att jag ska att ha en sektion. 546 00:29:28,470 --> 00:29:31,000 Så, är sektioner som - 547 00:29:31,000 --> 00:29:35,160 Om du någonsin har sett musik app, när du har konstnärer, sektioner skulle 548 00:29:35,160 --> 00:29:37,830 vara aen genom Z's - 549 00:29:37,830 --> 00:29:38,780 breven - 550 00:29:38,780 --> 00:29:42,600 och sedan, du vet, den enskilde rader skulle vara artistnamn. 551 00:29:42,600 --> 00:29:47,460 Och så, vad är hett här, är att jag kan komma åt alla objekt inuti 552 00:29:47,460 --> 00:29:50,430 min storyboard genom detta rullgardinsmenyn, också. 553 00:29:50,430 --> 00:29:56,600 >> Så, jag ska klicka på min avdelning, och jag vill, du vet, kanske fem rader. 554 00:29:56,600 --> 00:30:00,770 Och sedan, inne i varje rad, Jag vill sätta en etikett. 555 00:30:00,770 --> 00:30:04,080 556 00:30:04,080 --> 00:30:06,340 Och jag kommer att kalla denna blå. 557 00:30:06,340 --> 00:30:09,530 558 00:30:09,530 --> 00:30:15,630 Och då, jag vill sätta en UI vy, du vet, kanske för, typ, en liten låda. 559 00:30:15,630 --> 00:30:23,840 560 00:30:23,840 --> 00:30:28,710 >> Så att jag kan visa folk en förhandsvisning av färgen. 561 00:30:28,710 --> 00:30:34,150 Och jag ska gå tillbaka till fastigheten och ändra färgen på, åh, det gör jag inte 562 00:30:34,150 --> 00:30:35,510 vet, den här. 563 00:30:35,510 --> 00:30:38,630 564 00:30:38,630 --> 00:30:43,150 >> Och sedan, märker också, här, när jag har tillbehören, kan jag ha massor 565 00:30:43,150 --> 00:30:46,160 av de olika tillbehör som du normalt ser. 566 00:30:46,160 --> 00:30:55,250 Indikatorn för avslöjande, detaljerna, eller bock, eller helt enkelt bara detaljer. 567 00:30:55,250 --> 00:30:59,080 Så kanske vi kan göra, som, ett avslöjande indikator, till exempel. 568 00:30:59,080 --> 00:31:03,540 >> Och sedan, varför inte vi ta dessa, kopiera klistra in dem och sätta dem i 569 00:31:03,540 --> 00:31:06,740 nästa tabellrad. 570 00:31:06,740 --> 00:31:08,115 Så, kan vi kalla det gula. 571 00:31:08,115 --> 00:31:10,620 572 00:31:10,620 --> 00:31:12,155 Och jag kanske måste utöka detta. 573 00:31:12,155 --> 00:31:15,730 574 00:31:15,730 --> 00:31:17,290 Låt oss göra det gula. 575 00:31:17,290 --> 00:31:20,610 Och på detta sätt, kan vi kopiera klistra väg ner. 576 00:31:20,610 --> 00:31:24,910 577 00:31:24,910 --> 00:31:25,370 Vad var det? 578 00:31:25,370 --> 00:31:26,620 Purple. 579 00:31:26,620 --> 00:31:30,020 580 00:31:30,020 --> 00:31:34,740 >> Så dessa är alla typiska CS50 färger som du har sett i klassen - 581 00:31:34,740 --> 00:31:37,160 faktiskt, tyvärr - 582 00:31:37,160 --> 00:31:38,410 eller på webbplatsen. 583 00:31:38,410 --> 00:31:49,700 584 00:31:49,700 --> 00:31:51,260 Förhoppningsvis ni kan se vad jag gör här. 585 00:31:51,260 --> 00:31:57,270 586 00:31:57,270 --> 00:31:57,890 OK. 587 00:31:57,890 --> 00:31:58,490 Sista. 588 00:31:58,490 --> 00:32:02,040 >> PUBLIK: Hur fick du lägger raden från början? 589 00:32:02,040 --> 00:32:04,740 >> RHED SHI: Så frågan var, hur gjorde jag till raden från början? 590 00:32:04,740 --> 00:32:07,500 Jag gick in i denna tabell avsnitt - eller hur jag kan 591 00:32:07,500 --> 00:32:09,200 Välj bordsdelen - 592 00:32:09,200 --> 00:32:11,250 och då, här, jag uppdaterade antalet rader. 593 00:32:11,250 --> 00:32:19,920 594 00:32:19,920 --> 00:32:22,505 >> Och, vill jag hoppas att det fungerar. 595 00:32:22,505 --> 00:32:30,620 596 00:32:30,620 --> 00:32:31,480 OK. 597 00:32:31,480 --> 00:32:32,870 Låt oss se om detta fungerar. 598 00:32:32,870 --> 00:32:34,000 Åh, perfekt, awesome. 599 00:32:34,000 --> 00:32:35,300 OK. 600 00:32:35,300 --> 00:32:40,330 Medan jag höll på att bygga upp min demo, några saker var inte i linje, så, tack för 601 00:32:40,330 --> 00:32:42,510 applåderna. 602 00:32:42,510 --> 00:32:42,920 >> Yeah. 603 00:32:42,920 --> 00:32:44,770 Så, låt oss se. 604 00:32:44,770 --> 00:32:47,550 Vi ska göra det här nio bara för att göra allt - eller faktiskt, låt oss bara 605 00:32:47,550 --> 00:32:51,420 vända alla dessa in i avslöjande indikatorer. 606 00:32:51,420 --> 00:32:55,790 Och sedan, vad jag vill visa dig också, var hur jag kan ta var och en av dem 607 00:32:55,790 --> 00:32:59,230 tabellrader och få dem att interagera - 608 00:32:59,230 --> 00:33:00,150 oh. 609 00:33:00,150 --> 00:33:01,400 Nej. 610 00:33:01,400 --> 00:33:05,700 611 00:33:05,700 --> 00:33:06,030 >> Oh. 612 00:33:06,030 --> 00:33:07,230 Dessutom, jag vill visa dig - 613 00:33:07,230 --> 00:33:13,080 Här kan jag sätta titeln på min navigationskontrollen, eller hur? 614 00:33:13,080 --> 00:33:17,090 Så egentligen, kommer du att märka, så fort jag inbäddad denna uppfattning controller inne 615 00:33:17,090 --> 00:33:22,010 av navigationskontrollen, ser vi här navigeringsfältet högst upp på vår 616 00:33:22,010 --> 00:33:25,340 storyboarden representation av en vy controller. 617 00:33:25,340 --> 00:33:29,270 Och så ger det oss, liksom, en visuell, slags, guide till vår synliga skärmen. 618 00:33:29,270 --> 00:33:34,360 Detta är självklart att vara navigeringsfältet. 619 00:33:34,360 --> 00:33:40,950 >> Och vad jag vill göra snabbt, nu, sätts i en annan - 620 00:33:40,950 --> 00:33:45,880 så denna tabell view controller jag gjorde med ta en av dessa och dra den 621 00:33:45,880 --> 00:33:49,800 här, och det är vad som får mig att snabbt, verkligen, skapa en tabell vy 622 00:33:49,800 --> 00:33:50,850 styrenheten. 623 00:33:50,850 --> 00:33:54,100 Om vi ​​har tid men, du ska se det, programma, det är en 624 00:33:54,100 --> 00:33:57,660 lite mer knepigt att skapa en tabell view controller, eftersom det 625 00:33:57,660 --> 00:34:02,520 finns ett par metoder som är krävs för att du ska, liksom, skriver 626 00:34:02,520 --> 00:34:07,130 i syfte för tabellen vy ansvarige att visas korrekt. 627 00:34:07,130 --> 00:34:15,340 >> Men jag vill bara visa dig, nu, ett exempel på där, om jag tar det, 628 00:34:15,340 --> 00:34:15,920 till exempel - 629 00:34:15,920 --> 00:34:18,290 Jag har satt i en annan vy controller. 630 00:34:18,290 --> 00:34:27,320 Och nu, låt oss säga att jag vill styra alt min första blå 631 00:34:27,320 --> 00:34:28,980 tabellrad till här. 632 00:34:28,980 --> 00:34:31,070 Och jag vill kalla den här blå. 633 00:34:31,070 --> 00:34:32,570 Och sedan - 634 00:34:32,570 --> 00:34:34,159 låt oss se. 635 00:34:34,159 --> 00:34:41,050 Jag är på utsikten nu, och jag kan ändra bakgrunden till blått. 636 00:34:41,050 --> 00:34:45,945 >> Och så, varsel, här, här rullgardins Menyn ger dig också en hierarki av allt 637 00:34:45,945 --> 00:34:47,040 av dessa objekt. 638 00:34:47,040 --> 00:34:50,530 Så en viktig sak att notera, här, är att alla dessa saker, här - 639 00:34:50,530 --> 00:34:54,330 denna tabell view controller, tabellen visa, tabellvyn avsnitt, tabellvyn 640 00:34:54,330 --> 00:34:57,169 cell - alla dessa är objekt, i kod. 641 00:34:57,169 --> 00:35:03,752 Så, ni vet, är just nu en etikett under innehållsvyn, et cetera. 642 00:35:03,752 --> 00:35:05,020 Så vidare och så vidare. 643 00:35:05,020 --> 00:35:08,765 >> Så, om vi kör den här koden, vi bör se någonting - 644 00:35:08,765 --> 00:35:15,816 645 00:35:15,816 --> 00:35:17,870 låt oss se om detta - ja. 646 00:35:17,870 --> 00:35:18,670 Så där ja. 647 00:35:18,670 --> 00:35:22,120 Men om vi inte gör det, ingen av dessa andra saker fungerar. 648 00:35:22,120 --> 00:35:22,500 Rätt? 649 00:35:22,500 --> 00:35:23,800 Så bara det här fungerar. 650 00:35:23,800 --> 00:35:29,100 Och, av hänsyn till tiden, jag kommer inte går in, du vet, att sätta 651 00:35:29,100 --> 00:35:29,770 ner de andra. 652 00:35:29,770 --> 00:35:32,020 Och detta är slutet på, slags, storyboard - 653 00:35:32,020 --> 00:35:33,400 vad jag ville visa du för storyboard. 654 00:35:33,400 --> 00:35:36,330 655 00:35:36,330 --> 00:35:43,490 >> Och, jag har ett utarbetat exempel, faktiskt, just här. 656 00:35:43,490 --> 00:35:48,090 Så, är detta storyboard som jag gjorde tidigare. 657 00:35:48,090 --> 00:35:52,740 Så, som ni kan se, var det min navigationskontrollen. 658 00:35:52,740 --> 00:35:57,040 Sen hade jag min första uppfattning controller, då hade jag mitt bord view controller, 659 00:35:57,040 --> 00:35:58,980 och sedan hade jag alla dessa - 660 00:35:58,980 --> 00:36:01,180 så tidigare, jag gjorde något helt annat. 661 00:36:01,180 --> 00:36:04,450 Så, ursäkta dessa saker. 662 00:36:04,450 --> 00:36:07,930 Jag ska nog rensa det senare innan Jag skicka det till produktion. 663 00:36:07,930 --> 00:36:12,800 >> Men om vi kör detta, vi får se att alla alternativ är 664 00:36:12,800 --> 00:36:14,050 tillgängliga för oss. 665 00:36:14,050 --> 00:36:18,540 666 00:36:18,540 --> 00:36:21,320 Utom jag inte gjorde bakgrunderna dessa färger. 667 00:36:21,320 --> 00:36:26,510 Så, trevlig enkel applikation. 668 00:36:26,510 --> 00:36:28,340 >> Nu ska vi försöka att ta itu med denna programmässigt. 669 00:36:28,340 --> 00:36:31,270 670 00:36:31,270 --> 00:36:32,130 OK. 671 00:36:32,130 --> 00:36:37,570 Så, för att göra det, vi ska bara att starta ett nytt Xcode projekt. 672 00:36:37,570 --> 00:36:41,920 Vi ska göra det en tom ansökan nu, eftersom vi inte vill ha 673 00:36:41,920 --> 00:36:42,380 storyboard. 674 00:36:42,380 --> 00:36:46,590 Så, jag är helt enkelt att begränsa mig till inte använda någon av de storyboard, och en 675 00:36:46,590 --> 00:36:49,170 tom ansökan kommer inte ge mig ett storyboard. 676 00:36:49,170 --> 00:36:52,256 Detta är bara för att förhindra att mig själv från att fuska. 677 00:36:52,256 --> 00:36:54,428 Låt oss se. 678 00:36:54,428 --> 00:36:55,360 Vänta. 679 00:36:55,360 --> 00:36:55,960 Gjorde jag - 680 00:36:55,960 --> 00:36:56,448 Ja. 681 00:36:56,448 --> 00:36:57,698 OK. 682 00:36:57,698 --> 00:37:08,650 683 00:37:08,650 --> 00:37:09,180 >> Rätt. 684 00:37:09,180 --> 00:37:16,790 Så, här är vi kvar med inget annat än kod. 685 00:37:16,790 --> 00:37:19,460 Så, låt mig flytta fönstret något över. 686 00:37:19,460 --> 00:37:22,020 687 00:37:22,020 --> 00:37:22,260 Rätt. 688 00:37:22,260 --> 00:37:28,160 Som ni kan se här, de enda filer vi ges är AppDelegate.h och dot 689 00:37:28,160 --> 00:37:30,500 m, och vi har inte storyboard längre. 690 00:37:30,500 --> 00:37:39,580 >> Så om vi kör detta är vi fortfarande kommer att komma till den vita skärmen, tack och lov. 691 00:37:39,580 --> 00:37:42,280 OK - vit skärm, men inget annat. 692 00:37:42,280 --> 00:37:45,260 Och här är den viktigaste delen. 693 00:37:45,260 --> 00:37:47,810 Det är där det händer händer. 694 00:37:47,810 --> 00:37:51,410 I de tidigare versionerna, finns det oftast ingen kod här, men det 695 00:37:51,410 --> 00:37:55,600 storyboarden föreskrivs i huvudsak koden för den delen. 696 00:37:55,600 --> 00:37:57,470 Jag kommer inte gå in på detaljer om hur. 697 00:37:57,470 --> 00:38:02,890 >> Och vad vi vill göra nu är att vi vill ha att gå in här, och detta lilla utrymme 698 00:38:02,890 --> 00:38:05,050 börjar skapa vår app igen. 699 00:38:05,050 --> 00:38:06,092 Så - 700 00:38:06,092 --> 00:38:06,318 ja? 701 00:38:06,318 --> 00:38:07,450 >> PUBLIK: Zoom? 702 00:38:07,450 --> 00:38:07,770 >> RHED SHI: Zoom. 703 00:38:07,770 --> 00:38:09,020 Ja, visst. 704 00:38:09,020 --> 00:38:13,940 705 00:38:13,940 --> 00:38:14,520 OK. 706 00:38:14,520 --> 00:38:17,380 Jag kommer att skriva, så detta inte bör roll för mycket. 707 00:38:17,380 --> 00:38:17,940 OK. 708 00:38:17,940 --> 00:38:22,720 >> Så först, kom ihåg att vi ville skapa en navigationskontrollen, eller hur? 709 00:38:22,720 --> 00:38:27,090 Och även, som ni kan se här, Xcode gör ett riktigt bra jobb med 710 00:38:27,090 --> 00:38:28,070 självfyllning. 711 00:38:28,070 --> 00:38:31,650 Så, som ni kommer att märka, namnen på allt är mycket längre än 712 00:38:31,650 --> 00:38:33,910 vanligt, men Xcode fyller det för dig. 713 00:38:33,910 --> 00:38:35,710 Så jag kan bara trycka Enter. 714 00:38:35,710 --> 00:38:40,180 >> Så, jag vill skapa ett UI navigering controller pekare, och jag kan kalla det 715 00:38:40,180 --> 00:38:41,430 navigationController. 716 00:38:41,430 --> 00:38:43,040 717 00:38:43,040 --> 00:38:44,470 Nu, vad gör jag nu? 718 00:38:44,470 --> 00:38:49,510 Efter detta likhetstecken, jag behöver, först, skapar det inne i minnet. 719 00:38:49,510 --> 00:38:53,790 Så jag ska göra NavigationController Alloc - 720 00:38:53,790 --> 00:38:56,640 så är detta liknar malloc, att ni som används i C - 721 00:38:56,640 --> 00:38:58,400 och sedan kommer jag att init det. 722 00:38:58,400 --> 00:39:03,670 >> Så det är verkligen viktigt att alla objekt som du skapar, du vill 723 00:39:03,670 --> 00:39:04,940 alloc och init det. 724 00:39:04,940 --> 00:39:08,600 Det kommer att skapa den och instantialize det inne i minnet, och 725 00:39:08,600 --> 00:39:10,480 Nu kan du använda den. 726 00:39:10,480 --> 00:39:10,780 Okej? 727 00:39:10,780 --> 00:39:14,360 Om du inte gör det, gör ditt objekt inte existerar, och du kommer att stöta på ett gäng 728 00:39:14,360 --> 00:39:17,290 problem. 729 00:39:17,290 --> 00:39:20,250 >> Och sedan, jag vill skapa en vy controller, eller hur? 730 00:39:20,250 --> 00:39:25,580 Så, jag vill skapa en UIViewController stjärna - 731 00:39:25,580 --> 00:39:29,620 så, allt är en pekare i Objective-C, och jag ska göra 732 00:39:29,620 --> 00:39:31,600 något liknande, här - 733 00:39:31,600 --> 00:39:32,850 Alloc, init. 734 00:39:32,850 --> 00:39:38,680 735 00:39:38,680 --> 00:39:40,150 OK. 736 00:39:40,150 --> 00:39:43,450 >> Och vad jag ska göra är, jag är gå till - så, minns när vi gjorde 737 00:39:43,450 --> 00:39:45,360 den inbäddade i navigationskontrollen? 738 00:39:45,360 --> 00:39:46,920 Detta är hur du gör det i kod. 739 00:39:46,920 --> 00:39:54,550 Du kommer att göra navigationController 740 00:39:54,550 --> 00:39:55,780 pushViewController - 741 00:39:55,780 --> 00:39:57,636 >> PUBLIK: [OHÖRBAR]. 742 00:39:57,636 --> 00:39:59,030 Kommer detta att hända för oss, eller -? 743 00:39:59,030 --> 00:40:00,080 >> RHED SHI: Oh, ja. 744 00:40:00,080 --> 00:40:00,550 Nej. 745 00:40:00,550 --> 00:40:02,740 Det gillar mig bättre. 746 00:40:02,740 --> 00:40:04,670 Nej, kommer det att fungera för dig också. 747 00:40:04,670 --> 00:40:06,700 Så dessa är alla metoder. 748 00:40:06,700 --> 00:40:10,400 Så pushViewController är en metod, och även mer specifikt, är det en 749 00:40:10,400 --> 00:40:13,590 instansmetod för UI navigationskontrollen. 750 00:40:13,590 --> 00:40:20,030 Eftersom jag var tvungen att skapa mitt UI navigering controller stjärna, och sedan jag 751 00:40:20,030 --> 00:40:24,510 kan kalla detta pushViewController på min specifik instans av ett UI navigering 752 00:40:24,510 --> 00:40:25,010 styrenheten. 753 00:40:25,010 --> 00:40:29,490 >> PUBLIK: Har vi att göra exakt ord, eller är det redan finns för det? 754 00:40:29,490 --> 00:40:31,380 >> RHED SHI: Ja, eftersom det är en metod. 755 00:40:31,380 --> 00:40:32,200 Det är som en funktion. 756 00:40:32,200 --> 00:40:33,330 Det är som printf. 757 00:40:33,330 --> 00:40:34,390 Det är som scanf. 758 00:40:34,390 --> 00:40:36,250 Det är som strcompare. 759 00:40:36,250 --> 00:40:40,310 Förutom den vet vad du kanske vill typ, och märker att det kommer alltid 760 00:40:40,310 --> 00:40:42,740 komma med saker som är juridiskt tillåtet för dig. 761 00:40:42,740 --> 00:40:47,620 Så, om inget dyker upp här, då något är fel. 762 00:40:47,620 --> 00:40:50,550 >> Så, pushViewController. 763 00:40:50,550 --> 00:40:52,580 Så, nu vill jag att skjuta min nyskapade 764 00:40:52,580 --> 00:40:56,850 UIViewController, och sedan, animerade - 765 00:40:56,850 --> 00:40:57,470 kanske inte. 766 00:40:57,470 --> 00:41:00,110 Eftersom detta kommer att bli den första vyn controller. 767 00:41:00,110 --> 00:41:03,210 Jag menar, även om jag gjorde animerade, det förmodligen inte kommer att dyka upp, eftersom 768 00:41:03,210 --> 00:41:05,050 det är den första skärmen. 769 00:41:05,050 --> 00:41:06,540 >> Och kom ihåg konsolerna. 770 00:41:06,540 --> 00:41:08,850 Så kom ihåg hur vi använde konsolerna? 771 00:41:08,850 --> 00:41:11,870 Och innanför parentes, objekt uppmanar en metod - 772 00:41:11,870 --> 00:41:15,910 så vårt mål är navigations styrenheten, och metoden är en push 773 00:41:15,910 --> 00:41:17,210 view controller animerade. 774 00:41:17,210 --> 00:41:21,920 Och se hur det tar två argument, och de är åtskilda av, sorts, 775 00:41:21,920 --> 00:41:24,390 ord och ett kolon. 776 00:41:24,390 --> 00:41:28,300 Så försöker Objective-C för att göra det trevligt och enkelt för dig att läsa högt - 777 00:41:28,300 --> 00:41:33,020 koden - och ha det semi, slags, vettigt. 778 00:41:33,020 --> 00:41:37,150 >> Men att göra just detta är inte tillräckligt. 779 00:41:37,150 --> 00:41:39,780 Låt mig zooma ut nu. 780 00:41:39,780 --> 00:41:44,210 Att göra just detta är inte tillräckligt för att få vad vi fick tidigare. 781 00:41:44,210 --> 00:41:48,580 Så här kommer du att märka att det finns faktiskt inte kommer att bli någon form av 782 00:41:48,580 --> 00:41:50,190 bar, här, eller hur? 783 00:41:50,190 --> 00:41:54,680 Det finns ingen navigeringsfältet, vilket innebär att vi fortfarande inte har fått det. 784 00:41:54,680 --> 00:41:58,850 >> Och vi kan testa det ut, också, genom att, kanske, ändra bakgrunden av 785 00:41:58,850 --> 00:42:00,460 ViewController, eller hur? 786 00:42:00,460 --> 00:42:01,710 ViewController.background-- 787 00:42:01,710 --> 00:42:03,155 788 00:42:03,155 --> 00:42:03,640 ah. 789 00:42:03,640 --> 00:42:07,690 Så, se hur ViewController inte hade en bakgrundsfärg, även om jag 790 00:42:07,690 --> 00:42:08,780 ville komma åt det? 791 00:42:08,780 --> 00:42:14,080 Och det beror på att ViewController är en behållare för vyn. 792 00:42:14,080 --> 00:42:19,490 Så har det en vy egendom, som sedan har en bakgrundsfärg. 793 00:42:19,490 --> 00:42:25,510 >> Och, kan jag ställa in den, typ av tröttande, genom att kalla färgen 794 00:42:25,510 --> 00:42:28,130 på UIColor objektet. 795 00:42:28,130 --> 00:42:33,210 Så, meddelande här, är redColor en metod. 796 00:42:33,210 --> 00:42:36,750 Det är en klassmetod UIcolor. 797 00:42:36,750 --> 00:42:40,820 Eftersom jag inte behövde skapa en faktisk instans av en UIColor för 798 00:42:40,820 --> 00:42:42,020 att anropa metoden på det. 799 00:42:42,020 --> 00:42:45,050 Jag bara, helt enkelt, kallade det på typ-liknande namn. 800 00:42:45,050 --> 00:42:49,620 Jag, liksom, kallade det på int, om int hade, liknande, en metod för att den, till exempel. 801 00:42:49,620 --> 00:42:52,380 >> Och så, om vi kör den här koden, vi kommer märker att bakgrunden är 802 00:42:52,380 --> 00:42:53,540 faktiskt inte röd. 803 00:42:53,540 --> 00:42:54,790 Det är fortfarande vitt. 804 00:42:54,790 --> 00:42:57,720 805 00:42:57,720 --> 00:43:04,550 Och hur vi kan komma runt det är, märke till hur det är self.window. 806 00:43:04,550 --> 00:43:08,260 Det är, liksom, den ultimata behållaren för din ansökan. 807 00:43:08,260 --> 00:43:11,630 Det är den ultimata sak som innehåller allting på skärmen, under en 808 00:43:11,630 --> 00:43:13,650 iPhone eller iPad ansökan. 809 00:43:13,650 --> 00:43:20,970 >> Och, enkelt, self.window har denna egenskap som kallas 810 00:43:20,970 --> 00:43:22,650 rootViewController. 811 00:43:22,650 --> 00:43:26,480 Och det kommer att bli pekaren till den allra första uppfattning controller inne 812 00:43:26,480 --> 00:43:27,270 för din app. 813 00:43:27,270 --> 00:43:32,000 Så, vad vi vill göra här, nu, är ställa in det lika med vår navigering 814 00:43:32,000 --> 00:43:32,710 styrenheten. 815 00:43:32,710 --> 00:43:33,760 Rätt? 816 00:43:33,760 --> 00:43:37,490 Därför att, tekniskt, navigation regulatorn är vår allra första uppfattning 817 00:43:37,490 --> 00:43:38,770 styrenheten. 818 00:43:38,770 --> 00:43:46,160 Det håller reda på en rad andra vy controllers, och vi drivit denna 819 00:43:46,160 --> 00:43:49,810 View Controller i matrisen i navigationskontrollen. 820 00:43:49,810 --> 00:43:52,640 >> Så, vill du inte göra det här. 821 00:43:52,640 --> 00:43:54,225 Det skulle egentligen inte hjälpa dig. 822 00:43:54,225 --> 00:43:58,040 Du vill göra det här, om du vill göra en navigationskontrollen, vilket de flesta 823 00:43:58,040 --> 00:44:01,100 av er förmodligen kommer eftersom du vill att, liksom, har någon form av, 824 00:44:01,100 --> 00:44:04,840 liknande, menyn för att gå tillbaka till eller någon hemsidan för att gå tillbaka till, snarare än en 825 00:44:04,840 --> 00:44:05,470 tom skärm. 826 00:44:05,470 --> 00:44:05,920 Ja? 827 00:44:05,920 --> 00:44:11,460 >> PUBLIK: Är det obekvämt för dig att zooma in på den - 828 00:44:11,460 --> 00:44:12,710 >> RHED SHI: Ja. 829 00:44:12,710 --> 00:44:15,310 830 00:44:15,310 --> 00:44:15,720 Så, ja. 831 00:44:15,720 --> 00:44:22,370 Detta är koden, och nu Låt oss testa det. 832 00:44:22,370 --> 00:44:27,920 >> Så där ja. 833 00:44:27,920 --> 00:44:29,170 Magi. 834 00:44:29,170 --> 00:44:30,960 835 00:44:30,960 --> 00:44:32,690 Så, OK. 836 00:44:32,690 --> 00:44:34,420 Tack. 837 00:44:34,420 --> 00:44:35,000 OK. 838 00:44:35,000 --> 00:44:38,690 Så nu, vad vi vill göra är att - ja, vi är typ av begränsad, här, eller hur? 839 00:44:38,690 --> 00:44:45,130 Vi skulle kunna skriva allt Insidan av en funktion. 840 00:44:45,130 --> 00:44:48,470 Men, det är inte hur iOS utveckling brukar fungera. 841 00:44:48,470 --> 00:44:53,030 >> Så, vad vi ska göra är, vi är kommer att skapa några nya filer. 842 00:44:53,030 --> 00:44:57,110 Men, mer specifikt, vi ska skapa en annan Objective-C klass, eller 843 00:44:57,110 --> 00:44:58,010 Ett annat ändamål - 844 00:44:58,010 --> 00:45:00,700 klass och objekt är utbytbara här. 845 00:45:00,700 --> 00:45:06,460 Och, här är hur jag kunde, potentiellt, skapa en annan klass av U-styrenheter. 846 00:45:06,460 --> 00:45:12,030 >> Så det är en underklass, som ni kommer att märka, här, det är en underklass av den 847 00:45:12,030 --> 00:45:15,910 UI view controller, men jag kan kalla det något annat namn här. 848 00:45:15,910 --> 00:45:19,400 Jag skulle kunna kalla detta CS50, skulle jag ringa denna uppfattning controller, jag kunde ringa 849 00:45:19,400 --> 00:45:21,640 denna bla view controller - 850 00:45:21,640 --> 00:45:22,400 vad jag vill. 851 00:45:22,400 --> 00:45:24,140 Det är bara namnet på klassen. 852 00:45:24,140 --> 00:45:27,020 Men det kommer att vara viktigt därför att, i huvudsak, vad jag gör 853 00:45:27,020 --> 00:45:29,720 här är, jag skapar ett annat klassnamn. 854 00:45:29,720 --> 00:45:34,140 Så, det kommer att bli, liksom, en del sorts typ eller ett objekt. 855 00:45:34,140 --> 00:45:35,910 Så bör det vara lite generisk. 856 00:45:35,910 --> 00:45:37,225 Det kommer inte att vara mycket specifika. 857 00:45:37,225 --> 00:45:40,410 858 00:45:40,410 --> 00:45:44,480 >> Och dessutom, jag vill peka ut dessa två alternativ. 859 00:45:44,480 --> 00:45:48,430 Eftersom vi gör allt inuti kod, ibland är det mycket enklare 860 00:45:48,430 --> 00:45:53,540 att ta in ett gränssnitt fil, så att Jag kan bokstavligen dra och släppa, som 861 00:45:53,540 --> 00:45:54,960 vi gjorde tidigare med storyboard - 862 00:45:54,960 --> 00:45:57,810 ni vet, en etikett, eller en knapp, eller vad. 863 00:45:57,810 --> 00:46:01,950 Och så, xibs är filer som gör att du kan gör det, och du måste ansluta den 864 00:46:01,950 --> 00:46:04,310 denna uppfattning controller fil. 865 00:46:04,310 --> 00:46:06,540 >> Så, jag ska medvetet inte kontrollera detta. 866 00:46:06,540 --> 00:46:12,510 Vanligtvis skulle jag kolla det här, och om jag endast gjorde detta för iPhone eller iPad, jag 867 00:46:12,510 --> 00:46:16,340 skulle kontrollera detta och helt enkelt ha en för, du vet, iPhone eller iPad. 868 00:46:16,340 --> 00:46:19,750 Men eftersom jag gör universell, jag ska att skapa två av dem senare. 869 00:46:19,750 --> 00:46:22,220 Så, jag ska medvetet avmarkera detta. 870 00:46:22,220 --> 00:46:23,940 >> Det är också väldigt viktigt. 871 00:46:23,940 --> 00:46:27,490 Många gånger har jag haft fel där det inte kontrollerades. 872 00:46:27,490 --> 00:46:31,930 Och så, naturligtvis, är den här filen inte, slags, som ingår eller importeras 873 00:46:31,930 --> 00:46:33,740 insidan av detta test mapp. 874 00:46:33,740 --> 00:46:38,180 Och så har min kod absolut ingen aning om existensen av denna fil, och 875 00:46:38,180 --> 00:46:41,080 som orsakar mycket smärta och timmar av felsökning. 876 00:46:41,080 --> 00:46:44,360 Men, se bara till att det här är markerat så att, du vet, målet för detta 877 00:46:44,360 --> 00:46:47,510 Filen är för denna applikation. 878 00:46:47,510 --> 00:46:48,310 >> OK. 879 00:46:48,310 --> 00:46:51,680 Så, nu har vi skapat två nya filer. 880 00:46:51,680 --> 00:46:54,050 Och dessa filer ser ganska tom. 881 00:46:54,050 --> 00:46:59,550 Och, faktiskt, låt oss också att fortsätta på genom att skapa de XIb filer. 882 00:46:59,550 --> 00:47:03,690 Så, tidigare, var jag i Cocoa Touch list. 883 00:47:03,690 --> 00:47:06,880 Nu ska jag gå in i användar Gränssnitt beröring, och som ni kan se, jag 884 00:47:06,880 --> 00:47:08,120 kan skapa ett storyboard. 885 00:47:08,120 --> 00:47:11,710 >> Så även jag började med en tom applikation, jag kan fortfarande använda en 886 00:47:11,710 --> 00:47:12,340 storyboard. 887 00:47:12,340 --> 00:47:15,480 Även om det blir knepigt när det gäller på hur du vill ansluta 888 00:47:15,480 --> 00:47:16,820 det till din kod. 889 00:47:16,820 --> 00:47:18,230 Så, jag kommer inte gå dit. 890 00:47:18,230 --> 00:47:22,160 >> Men, vad vi vill göra nu är att skapa en vy. 891 00:47:22,160 --> 00:47:25,720 Och du kan välja för en iPhone eller en iPad. 892 00:47:25,720 --> 00:47:30,180 Och oftast, för att beteckna skillnad - om du gör en 893 00:47:30,180 --> 00:47:31,950 allmän tillämpning - 894 00:47:31,950 --> 00:47:35,980 du antingen lägga ett understreck iPhone, eller så kan du göra en Twiddly. 895 00:47:35,980 --> 00:47:36,980 Det spelar egentligen ingen roll. 896 00:47:36,980 --> 00:47:40,890 Det är helt enkelt för dig att skilja vilken uppfattning är att vilken enhet. 897 00:47:40,890 --> 00:47:43,470 898 00:47:43,470 --> 00:47:44,430 >> Och så, nu ser. 899 00:47:44,430 --> 00:47:47,550 Jag har en skärm som jag kan jobba med. 900 00:47:47,550 --> 00:47:53,530 Och så, till exempel, jag kan sätta en etikett den här, du vet, och jag kan också sätta 901 00:47:53,530 --> 00:47:54,820 annan knapp här. 902 00:47:54,820 --> 00:47:58,730 Jag kommer inte bry ändra värdena här. 903 00:47:58,730 --> 00:48:09,050 >> Men, vad som är viktigt här är att filens ägare - 904 00:48:09,050 --> 00:48:13,660 så, jag är inne i iPhone visa, iPhone Xlb fil. 905 00:48:13,660 --> 00:48:18,050 Och i det här navigeringsfältet eller rullgardinsmenyn, jag vill gå till 906 00:48:18,050 --> 00:48:19,090 filens ägare. 907 00:48:19,090 --> 00:48:22,630 Och detta är verkligen viktigt steg här. 908 00:48:22,630 --> 00:48:27,780 Jag vill göra klass vy styrenhet, så att denna XIb filen är 909 00:48:27,780 --> 00:48:30,030 kommer att vara associerad med min åsikt controller. 910 00:48:30,030 --> 00:48:33,590 911 00:48:33,590 --> 00:48:39,360 Och allt som jag gör inne i min mening controller programmässigt är 912 00:48:39,360 --> 00:48:42,800 kommer att återspeglas på här. 913 00:48:42,800 --> 00:48:46,270 >> Så är dock att märka att - 914 00:48:46,270 --> 00:48:55,995 faktiskt, låt oss göra denna uppfattning bakgrund blå, till exempel. 915 00:48:55,995 --> 00:49:00,280 916 00:49:00,280 --> 00:49:01,530 Eller grönt. 917 00:49:01,530 --> 00:49:03,870 918 00:49:03,870 --> 00:49:07,950 Och sedan, så om du kommer att märka, tillbaka i denna kod, det är där vi fick våra 919 00:49:07,950 --> 00:49:09,200 navigationskontrollen. 920 00:49:09,200 --> 00:49:12,650 921 00:49:12,650 --> 00:49:18,310 >> Även om vi gjorde det steget, är det fortfarande kommer att vara röd, inte grön. 922 00:49:18,310 --> 00:49:20,350 Och det finns en anledning till varför. 923 00:49:20,350 --> 00:49:28,090 Det är för att, när vi inited vår uppfattning controller, här - 924 00:49:28,090 --> 00:49:30,010 ledsen, det är lite galet - 925 00:49:30,010 --> 00:49:34,520 när vi inited vår uppfattning controller här, vi inited det av den allmänna typ 926 00:49:34,520 --> 00:49:35,990 UIViewController. 927 00:49:35,990 --> 00:49:36,560 OK? 928 00:49:36,560 --> 00:49:40,560 Så vi inte ens göra det med denna klass. 929 00:49:40,560 --> 00:49:42,030 >> Så kom ihåg, detta är som en klass nu. 930 00:49:42,030 --> 00:49:47,160 Det kan ses som en typ, som bara som UIViewController är en typ. 931 00:49:47,160 --> 00:49:51,080 Och för att använda det, vad vi behöver göra är att importera den - 932 00:49:51,080 --> 00:49:52,520 import ViewController - 933 00:49:52,520 --> 00:49:55,750 och som ni kan se, det AutoFills det för mig. 934 00:49:55,750 --> 00:49:56,570 Så, ViewController - 935 00:49:56,570 --> 00:50:02,070 och nu, här, jag kan ändra detta UIViewController till ViewController. 936 00:50:02,070 --> 00:50:05,050 Och nu, här, jag kan ändra detta till ViewController. 937 00:50:05,050 --> 00:50:07,790 938 00:50:07,790 --> 00:50:09,250 >> Låt oss köra detta igen. 939 00:50:09,250 --> 00:50:16,970 940 00:50:16,970 --> 00:50:19,690 Det är fortfarande röd. 941 00:50:19,690 --> 00:50:23,370 Och anledningen till det är fortfarande rött är därför - 942 00:50:23,370 --> 00:50:26,230 woah, vad hände där? 943 00:50:26,230 --> 00:50:31,500 Vi ville associera detta xib fil med utsikt controller. 944 00:50:31,500 --> 00:50:37,540 Men för att verkligen göra att vi måste gå in i det här. 945 00:50:37,540 --> 00:50:42,980 Och när vi gör init, vi vill göra initWithNibName, och sedan vill vi 946 00:50:42,980 --> 00:50:48,910 gör det på strängen View_iPhone, till exempel. 947 00:50:48,910 --> 00:50:51,700 Du kan ignorera bunten här. 948 00:50:51,700 --> 00:50:54,965 >> Och detta kommer att möjliggöra oss till, faktiskt - 949 00:50:54,965 --> 00:51:00,620 950 00:51:00,620 --> 00:51:02,160 uh oh, det finns ett problem. 951 00:51:02,160 --> 00:51:09,300 952 00:51:09,300 --> 00:51:09,980 Rätt. 953 00:51:09,980 --> 00:51:17,670 >> Och så finns det ett problem, eftersom det i vår uppfattning Xlb fil, har vi en etikett och 954 00:51:17,670 --> 00:51:18,720 vi har en knapp. 955 00:51:18,720 --> 00:51:23,660 Men även om vi har anslutit dessa två, det finns inget inuti 956 00:51:23,660 --> 00:51:27,440 ViewController.h eller ViewController.m som speglar de 957 00:51:27,440 --> 00:51:29,160 knappar eller sådana etiketter. 958 00:51:29,160 --> 00:51:32,425 Så måste vi skriva de i så egenskaperna hos den vy controller. 959 00:51:32,425 --> 00:51:35,290 960 00:51:35,290 --> 00:51:39,490 >> Så detta är hur du deklarerar en fastighet. 961 00:51:39,490 --> 00:51:43,422 Det tar i, oftast, dessa två alternativ. 962 00:51:43,422 --> 00:51:48,690 Vid tillämpning av oss och detta seminarium, Jag skulle säga att, i allmänhet, 963 00:51:48,690 --> 00:51:52,250 de flesta fastigheter är nonatomic och behålla. 964 00:51:52,250 --> 00:51:55,420 Du kan läsa upp av Google söka, du vet, skillnaden mellan 965 00:51:55,420 --> 00:51:58,620 nonatomic och behålla den, du vet, Google eller något. 966 00:51:58,620 --> 00:52:01,090 Och jag tar dig till, liksom, Stack Overflow, där människor kommer att ha 967 00:52:01,090 --> 00:52:03,605 svar till skillnaderna mellan dem. 968 00:52:03,605 --> 00:52:07,000 Men för nu, det är vad vi vill bli berörda. 969 00:52:07,000 --> 00:52:12,790 >> Och vi vill göra en UI etikett, stjärna, och vi kan kalla det vad vi vill ha. 970 00:52:12,790 --> 00:52:15,710 Vi kan kalla det, du vet, etikett. 971 00:52:15,710 --> 00:52:18,270 972 00:52:18,270 --> 00:52:20,110 Och kommer vi att skapa en annan en för knapp. 973 00:52:20,110 --> 00:52:24,380 974 00:52:24,380 --> 00:52:29,910 Och kom ihåg att ta med asterisken, eftersom vi har att göra med pekare 975 00:52:29,910 --> 00:52:36,740 ganska mycket överallt inne av Objective-C. 976 00:52:36,740 --> 00:52:42,110 >> Dock kommer det fortfarande inte att lösa problemet, som ni kan se här. 977 00:52:42,110 --> 00:52:50,540 Och skälet är att, när vi vill ansluta en etikett Xlb fil eller en 978 00:52:50,540 --> 00:52:55,690 knappen för att programmet, eller sidhuvudet och genomförande-fil, vill vi 979 00:52:55,690 --> 00:52:58,255 lägga till denna bit kod - 980 00:52:58,255 --> 00:53:00,610 utlopp. 981 00:53:00,610 --> 00:53:03,600 Lägg märke till att det är ett nyckelord. 982 00:53:03,600 --> 00:53:07,970 >> Och, så fort jag skrivit klart ut det, borde det ha dessa 983 00:53:07,970 --> 00:53:09,100 två cirklar, här. 984 00:53:09,100 --> 00:53:11,200 Vanligtvis, de är inte fyllas i. 985 00:53:11,200 --> 00:53:12,920 Jag är inte säker på varför de är. 986 00:53:12,920 --> 00:53:21,370 Men oftast, måste du manuellt ansluta dem genom att gå till denna sida av 987 00:53:21,370 --> 00:53:23,530 försörjningsområdet. 988 00:53:23,530 --> 00:53:28,430 >> Och så, just nu, jag har min etikett valt, och jag vill dra denna nya 989 00:53:28,430 --> 00:53:33,910 referera utlopp för min fil ägare, och sedan klicka på Label. 990 00:53:33,910 --> 00:53:40,230 Så nu, äntligen, är denna etikett ansluten till denna etikett. 991 00:53:40,230 --> 00:53:44,950 Och denna etikett är vad vi ska använda programmässigt för att ändra dess 992 00:53:44,950 --> 00:53:49,250 text, dess typsnitt, dess bakgrund färg, et cetera. 993 00:53:49,250 --> 00:53:52,430 >> Så, varför inte vi gör det Samma för knappen? 994 00:53:52,430 --> 00:53:54,770 Och som ni kommer att märka, för knappen, det är lite mer komplicerat. 995 00:53:54,770 --> 00:53:59,060 Därför att, jag menar, du ska till trycker på en knapp, så det har fått en hel del 996 00:53:59,060 --> 00:54:02,950 alternativ för hur användarna kan trycka på en knapp. 997 00:54:02,950 --> 00:54:06,570 Och sedan får vi se senare att Vi kan koppla detta till vår 998 00:54:06,570 --> 00:54:09,140 kod för att få det att fungera. 999 00:54:09,140 --> 00:54:12,770 >> Så, för nu om vi vill ansluta den till den färdiga knappen 1000 00:54:12,770 --> 00:54:13,570 insidan av vår kod. 1001 00:54:13,570 --> 00:54:19,640 Så vi går till nya referenser utlopp, och gör sedan på knappen. 1002 00:54:19,640 --> 00:54:22,068 Nu ska vi köra det här igen. 1003 00:54:22,068 --> 00:54:23,040 Uh oh. 1004 00:54:23,040 --> 00:54:23,890 OK. 1005 00:54:23,890 --> 00:54:25,140 Jag vet inte vad som händer här nu. 1006 00:54:25,140 --> 00:54:48,450 1007 00:54:48,450 --> 00:54:49,700 Whoa. 1008 00:54:49,700 --> 00:54:57,380 1009 00:54:57,380 --> 00:54:58,960 Bara ett ögonblick, här. 1010 00:54:58,960 --> 00:55:02,490 >> Egentligen, varför inte vi tar en titta på ett annat exempel på 1011 00:55:02,490 --> 00:55:05,800 intresse tid. 1012 00:55:05,800 --> 00:55:06,200 OK. 1013 00:55:06,200 --> 00:55:10,610 Så, här är det mer lätt framställas exempel för ViewController. 1014 00:55:10,610 --> 00:55:13,230 1015 00:55:13,230 --> 00:55:17,110 Som ni kan se här, har jag inkluderat egenskaperna för den 1016 00:55:17,110 --> 00:55:18,460 etiketten och knappen. 1017 00:55:18,460 --> 00:55:20,370 Och sedan, denna bit kod här - 1018 00:55:20,370 --> 00:55:21,830 denna IBaction - 1019 00:55:21,830 --> 00:55:27,740 var en anslutning till den här knappen här. 1020 00:55:27,740 --> 00:55:33,940 Så som ni kan se här, Touch Up Inside är ansluten till väljaren 1021 00:55:33,940 --> 00:55:37,390 kallas intryckt. 1022 00:55:37,390 --> 00:55:41,700 >> Så, vi kan faktiskt gå igenom rörelse igen, här, genom att retuschera 1023 00:55:41,700 --> 00:55:48,750 Inne och dra den till Filens ägare, och sedan 1024 00:55:48,750 --> 00:55:51,570 klicka på intryckt. 1025 00:55:51,570 --> 00:55:52,820 Nu ska vi köra vår kod. 1026 00:55:52,820 --> 00:55:55,710 1027 00:55:55,710 --> 00:56:02,020 Så nu, fungerar denna knapp nu och kommer att ta oss till nästa sida. 1028 00:56:02,020 --> 00:56:08,430 >> Och, när det gäller vår syn controller, Detta är den bit kod som tog 1029 00:56:08,430 --> 00:56:10,000 hand om den intryckt. 1030 00:56:10,000 --> 00:56:14,260 Och det är viktigt att notera här, att Jag har skapat en annan typ av utsikt 1031 00:56:14,260 --> 00:56:16,330 styrenheten kallas en tabell view controller. 1032 00:56:16,330 --> 00:56:19,900 Så var det liknande att backa in storyboard, när jag drog en av 1033 00:56:19,900 --> 00:56:23,450 dessa bord view controllers in i storyboard. 1034 00:56:23,450 --> 00:56:24,470 Jag skapar en annan 1035 00:56:24,470 --> 00:56:30,000 >> Pekare till tabellvyn controller, alloc och init-ning det, och sedan göra 1036 00:56:30,000 --> 00:56:34,490 själv dot navigation controller, pressa ViewController denna nya 1037 00:56:34,490 --> 00:56:35,350 viewController. 1038 00:56:35,350 --> 00:56:39,750 Och jag har satt animeringen att ja, eftersom nu inne på min app, och jag 1039 00:56:39,750 --> 00:56:45,670 vill verkligen se animationen går från hemsidan till bordet 1040 00:56:45,670 --> 00:56:46,920 view controller. 1041 00:56:46,920 --> 00:56:48,830 1042 00:56:48,830 --> 00:56:51,110 >> PUBLIK: Har du fortfarande orolig om sophämtning? 1043 00:56:51,110 --> 00:56:51,840 >> RHED SHI: Vad är det? 1044 00:56:51,840 --> 00:56:54,740 Nej. 1045 00:56:54,740 --> 00:56:58,970 Så frågan var, har du att arbeta med sophämtning? 1046 00:56:58,970 --> 00:57:03,470 Så, Xcode 4 hade som ARC, vilket är automatisk referensräkning. 1047 00:57:03,470 --> 00:57:06,120 Och så, oftast när man startar en ny projekt, vill du kolla det, eftersom 1048 00:57:06,120 --> 00:57:09,440 ingen egentligen vill ta itu med frigöra minne och sånt. 1049 00:57:09,440 --> 00:57:13,720 Men jag tror i Xcode 5, finns det inte ens det alternativet om det nya projektet. 1050 00:57:13,720 --> 00:57:16,750 Så, den automatiskt gör det åt dig. 1051 00:57:16,750 --> 00:57:16,920 Ja? 1052 00:57:16,920 --> 00:57:20,970 >> PUBLIK: Kan du exportera en PDF i ditt storyboard? 1053 00:57:20,970 --> 00:57:22,020 >> RHED SHI: Ja, definitivt. 1054 00:57:22,020 --> 00:57:28,180 Så kommer alla av dessa innefattas i källkod, så att ni kan kolla in 1055 00:57:28,180 --> 00:57:30,730 den färdiga Xcode projekt för det. 1056 00:57:30,730 --> 00:57:31,105 Yeah? 1057 00:57:31,105 --> 00:57:35,944 >> PUBLIK: Men, jag menar, liksom, kan jag skriva ut en PDF-fil med min storyboard? 1058 00:57:35,944 --> 00:57:38,920 Om jag bara vill exportera bilder att visa någon. 1059 00:57:38,920 --> 00:57:39,160 >> RHED SHI: Oh yeah. 1060 00:57:39,160 --> 00:57:41,980 Jag tror, ​​kanske, kan du bara ta en skärmdump. 1061 00:57:41,980 --> 00:57:44,350 Ja, och skicka dem en skärm skott eller något. 1062 00:57:44,350 --> 00:57:45,600 Yeah. 1063 00:57:45,600 --> 00:57:49,170 1064 00:57:49,170 --> 00:57:50,570 >> Så, låt oss se. 1065 00:57:50,570 --> 00:57:56,470 Med tanke på tiden, tror jag det är allt jag kan täcka idag. 1066 00:57:56,470 --> 00:57:59,600 Men, jag vet att det är, faktiskt, bara knappt röra vid ytan på iOS 1067 00:57:59,600 --> 00:58:00,370 utveckling. 1068 00:58:00,370 --> 00:58:05,630 Så, är du välkommen att kontakta mig om du har några frågor om iOS 1069 00:58:05,630 --> 00:58:07,000 utveckling. 1070 00:58:07,000 --> 00:58:12,840 Och förhoppningsvis kommer jag att kunna rengöra upp en del av koden för käll 1071 00:58:12,840 --> 00:58:16,830 code-filer, så att du kommer att ha några riktigt fina exempel att arbeta med. 1072 00:58:16,830 --> 00:58:21,020 >> Andra än så, om ni går till CS50 Hackathon, kanske eller kanske jag 1073 00:58:21,020 --> 00:58:25,730 inte vara där, och jag kan hjälpa till med några iOS utveckling, för. 1074 00:58:25,730 --> 00:58:26,980 Så, tack så mycket, killar. 1075 00:58:26,980 --> 00:58:31,168