1 00:00:00,000 --> 00:00:07,880 2 00:00:07,880 --> 00:00:09,800 >> RHED SHI: Velkommen til se CS50 seminar - 3 00:00:09,800 --> 00:00:11,630 Introduktion til iOS. 4 00:00:11,630 --> 00:00:13,290 Tak til alle for at komme. 5 00:00:13,290 --> 00:00:16,610 Jeg håber du er lige så begejstrede da jeg om iOS. 6 00:00:16,610 --> 00:00:22,300 Sidste år tog jeg CS50 som sophomore, og jeg dybest set lært iOS til min 7 00:00:22,300 --> 00:00:23,490 afgangsprojekt. 8 00:00:23,490 --> 00:00:26,350 Og det var temmelig - 9 00:00:26,350 --> 00:00:30,530 godt, det var ikke let, men der er masser af support tutorials online. 10 00:00:30,530 --> 00:00:33,760 Og jeg håber virkelig, at denne seminar, vil jeg give jer et hoved 11 00:00:33,760 --> 00:00:36,750 starte på iOS udvikling 12 00:00:36,750 --> 00:00:40,490 >> Så i form af iOS udvikling, Der er to vigtigste ting, vi 13 00:00:40,490 --> 00:00:42,090 ønsker at dække i dag. 14 00:00:42,090 --> 00:00:43,290 Først sproget - 15 00:00:43,290 --> 00:00:46,650 sproget kommer til at være i Objective-C. Vi vil faktisk høre 16 00:00:46,650 --> 00:00:47,750 noget virkelig spændende. 17 00:00:47,750 --> 00:00:51,500 Så kan du deltage i hele Apple fællesskab af udviklere og bygge nogle 18 00:00:51,500 --> 00:00:52,940 virkelig awesome apps. 19 00:00:52,940 --> 00:00:58,670 >> Også iOS 7 er smuk, forhåbentlig, til nogle af jer. 20 00:00:58,670 --> 00:01:01,130 Men det er kontroversielt, jeg kender. 21 00:01:01,130 --> 00:01:05,349 Og først og fremmest, hvad jeg ønsker at gøre, er at guide dig gennem Objective-C og også 22 00:01:05,349 --> 00:01:10,650 Xcode, som er den integrerede udviklingsmiljø, som du vil være 23 00:01:10,650 --> 00:01:13,460 arbejder i til iOS. 24 00:01:13,460 --> 00:01:19,140 >> Og så bare et ord om Objective-C. Dybest set er det nøjagtig den samme som C, 25 00:01:19,140 --> 00:01:22,790 men med en masse andre ting. 26 00:01:22,790 --> 00:01:27,710 Og så, mere strengt, det er faktisk en super-sæt C. Så noget, du 27 00:01:27,710 --> 00:01:32,280 kan gøre i C lige nu, hvilket er dybest set gerne PSET 0 til 6, du 28 00:01:32,280 --> 00:01:34,170 kan gøre i Objective-C. 29 00:01:34,170 --> 00:01:38,620 >> Så føler ikke bange om denne nye sprog, som du kommer til at lære. 30 00:01:38,620 --> 00:01:42,120 Du har allerede dækket en masse af det, fordi du har alle gjort C denne sidste 31 00:01:42,120 --> 00:01:45,880 semester, undtagen nu går du at have en masse mere at arbejde med. 32 00:01:45,880 --> 00:01:49,270 Og jeg bare at lede dig gennem en par eksempler at fremhæve nogle 33 00:01:49,270 --> 00:01:53,920 af de vigtigste forskelle, som jeg fandt var virkelig vigtigt, når jeg lærte 34 00:01:53,920 --> 00:01:57,180 Objective-C sidste år. 35 00:01:57,180 --> 00:02:00,910 >> Godt faktisk, så det andet punkt er, Objective-C er naturligvis 36 00:02:00,910 --> 00:02:02,200 objektorienteret. 37 00:02:02,200 --> 00:02:06,340 Og vi vil diskutere en lille smule om, hvad det betyder senere. 38 00:02:06,340 --> 00:02:11,340 Dybest set, det er ligesom, hvordan du har arbejdet med structs i denne sidste PSET med 39 00:02:11,340 --> 00:02:13,360 noder og lignende andre ting som. 40 00:02:13,360 --> 00:02:17,110 Undtagen i Objective-C, alt er et objekt, og du kommer til at være 41 00:02:17,110 --> 00:02:20,720 passerer rundt pointere til objekter snarere end selve værdierne. 42 00:02:20,720 --> 00:02:25,050 Så det er bare noget vigtigt at huske på. 43 00:02:25,050 --> 00:02:29,140 >> Så hvorfor skal vi ikke starte med et par forskelle i syntaks mellem C og 44 00:02:29,140 --> 00:02:30,540 Objective-C? 45 00:02:30,540 --> 00:02:38,310 Jeg ønsker at fremhæve # include, du ved standard io.h i C og C + +, med 46 00:02:38,310 --> 00:02:44,030 Objective-C-version af det, som er # import, og derefter en slags 47 00:02:44,030 --> 00:02:44,790 header-fil. 48 00:02:44,790 --> 00:02:48,165 I dette tilfælde ville det være UIKit, du ved, skråstreg UIKit.h. 49 00:02:48,165 --> 00:02:53,560 Det kunne også være, du ved, MKMapview til dig, skråstreg MKMapview.h, hvis du vil 50 00:02:53,560 --> 00:02:56,370 at gøre, ligesom, et kort inde i din app. 51 00:02:56,370 --> 00:02:57,110 Lignende ting som. 52 00:02:57,110 --> 00:03:01,250 >> Så det vigtige er omfatte har nu ændret til at importere. 53 00:03:01,250 --> 00:03:04,340 Men ideen stadig. 54 00:03:04,340 --> 00:03:10,460 Du kommer til at importere en slags af header fil i dit program. 55 00:03:10,460 --> 00:03:14,550 >> Jeg vil også gerne fremhæve forskellen mellem printf og NSLog. 56 00:03:14,550 --> 00:03:19,760 Men som vi sagde tidligere, Objective-C er en streng super-sæt 57 00:03:19,760 --> 00:03:22,800 C, hvilket betyder, at printf eksisterer i Objective-C, også. 58 00:03:22,800 --> 00:03:24,340 Men de fleste mennesker ikke bruger det. 59 00:03:24,340 --> 00:03:28,245 De fleste mennesker bruger denne NSLog fordi det giver dig et tidsstempel, og vi vil se 60 00:03:28,245 --> 00:03:29,780 det i aktion senere. 61 00:03:29,780 --> 00:03:33,560 Men det er generelt en mere brugbar måde at udskrive variabler. 62 00:03:33,560 --> 00:03:38,220 >> Og jeg vil også gerne understrege, at NSLog tager i netop den samme 63 00:03:38,220 --> 00:03:41,650 pladsholder værdier printf gør - 64 00:03:41,650 --> 00:03:45,900 så% d er for en int, % F er en float. 65 00:03:45,900 --> 00:03:49,750 Men jeg ønsker at fremhæve denne meget sidste - 66 00:03:49,750 --> 00:03:52,960 NSLog% snabel - 67 00:03:52,960 --> 00:03:55,390 der er en pladsholder for et objekt. 68 00:03:55,390 --> 00:04:01,160 Og som jeg sagde tidligere, Objective-C behandler temmelig meget for det meste i objekter, 69 00:04:01,160 --> 00:04:05,020 og så dette kommer i brug, når man ønsker at udskrive, måske, måske 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å også, bemærke, at i vores NSLog erklæring, vi har et snabel foran 72 00:04:13,750 --> 00:04:15,380 af citatet - 73 00:04:15,380 --> 00:04:20,769 det vil betyde, at strengene, nu i Objective-C er objekter. 74 00:04:20,769 --> 00:04:23,310 De er ikke længere blot char stjerner. 75 00:04:23,310 --> 00:04:25,530 De er objekter, og er behandles som sådan. 76 00:04:25,530 --> 00:04:28,690 >> Så det er virkelig vigtigt, at når du bruger NSLog det tager på en NS 77 00:04:28,690 --> 00:04:32,580 snor, hvilket betyder, at du har at omfatte en på foran din 78 00:04:32,580 --> 00:04:34,270 anførselstegn. 79 00:04:34,270 --> 00:04:38,290 Og det er derfor, du ser her, i alle min funktion opkald til dette NSLog, jeg 80 00:04:38,290 --> 00:04:42,400 har en i foran anførselstegn, selv selvom% d og% f er er 81 00:04:42,400 --> 00:04:45,200 alle de samme fra C. 82 00:04:45,200 --> 00:04:47,930 >> Eventuelle spørgsmål, så vidt? 83 00:04:47,930 --> 00:04:50,920 Jeg vil prøve at gå gennem denne hurtigt, så at vi kan få mere tid til at arbejde 84 00:04:50,920 --> 00:04:55,210 med Xcode og Objective-C, så at du fyre kan få mere 85 00:04:55,210 --> 00:04:57,630 fortrolig med det. 86 00:04:57,630 --> 00:05:01,900 >> Dernæst vil jeg fremhæve noget begrebsmæssigt vigtigt. 87 00:05:01,900 --> 00:05:05,130 Så i C, de fleste ting er funktioner. 88 00:05:05,130 --> 00:05:06,280 Vi gør en funktion opkald. 89 00:05:06,280 --> 00:05:10,190 Vi erklærer funktioner på denne måde, med afkastet skrive først, derefter 90 00:05:10,190 --> 00:05:13,570 funktionsnavnet, parenteser og derefter uanset argumenter og den type 91 00:05:13,570 --> 00:05:15,590 disse argumenter, vi ønsker at gå i. 92 00:05:15,590 --> 00:05:19,970 Og Objective-C, fordi alt er et objekt eller klasse - 93 00:05:19,970 --> 00:05:23,970 så klasse og objekt er to begreber, er for det meste synonymt med hinanden, 94 00:05:23,970 --> 00:05:28,270 så jeg kan bruge dem i flæng hele seminaret. 95 00:05:28,270 --> 00:05:34,090 >> Men, vil du se, at vi har metoder i Objective-C snarere end funktioner. 96 00:05:34,090 --> 00:05:36,390 Og metoder hører til objekter. 97 00:05:36,390 --> 00:05:38,950 Så lige så, måske tage for eksempel knudepunkt - 98 00:05:38,950 --> 00:05:40,250 vores type [uhørligt] 99 00:05:40,250 --> 00:05:44,390 node fra PSET 6 eller 5 - 100 00:05:44,390 --> 00:05:49,590 vi har ordet, ejendom, eller den næste node pointer. 101 00:05:49,590 --> 00:05:53,880 Metoder er simpelthen funktioner inde eller anden form for struktur. 102 00:05:53,880 --> 00:05:57,510 >> Så i dette tilfælde ville strukturen være objektet, og metoden er 103 00:05:57,510 --> 00:05:59,260 noget, der hører til en genstand. 104 00:05:59,260 --> 00:06:02,650 Og det er hvordan du ville erklære, slags en fremgangsmåde. 105 00:06:02,650 --> 00:06:07,990 Du ville starte med igen, afkastet typen - så prøvede jeg at farve 106 00:06:07,990 --> 00:06:12,990 kode nøgleordene her, så du fyre kan se i det mindste formatering 107 00:06:12,990 --> 00:06:17,650 ligheder mellem funktion erklæringer og metode erklæringer. 108 00:06:17,650 --> 00:06:21,990 Så du starter med, du ved, en tilbagevenden typen - i dette tilfælde, er det et array, eller 109 00:06:21,990 --> 00:06:23,910 en NSArray pointer - 110 00:06:23,910 --> 00:06:26,710 og så har du denne metode. 111 00:06:26,710 --> 00:06:30,900 Og så, hvad der er interessant her er at i stedet for at have parenteser, vi 112 00:06:30,900 --> 00:06:32,900 have disse koloner. 113 00:06:32,900 --> 00:06:38,450 Og så, foran vores argumenter, vi sættes igen i parentes avanceret 114 00:06:38,450 --> 00:06:39,370 af vores argument. 115 00:06:39,370 --> 00:06:43,160 >> Så lige nu prøver jeg at gøre sammenligning mellem, du ved, n og 116 00:06:43,160 --> 00:06:45,450 nummer, fordi de er både som ints. 117 00:06:45,450 --> 00:06:49,580 Og så, den anden er en NSUInteger type. 118 00:06:49,580 --> 00:06:56,390 Og så, med Objective-C, når du ønsker at have flere argumenter i 119 00:06:56,390 --> 00:07:00,030 Deres metode klausul, du, en slags, skille dem ud lidt ligesom dette - 120 00:07:00,030 --> 00:07:03,790 Jeg er ikke helt sikker på hvordan til at beskrive det, men det er et godt eksempel på, hvordan du 121 00:07:03,790 --> 00:07:06,530 kan have flere argumenter derinde. 122 00:07:06,530 --> 00:07:10,360 >> Du kunne selvfølgelig bare helt ignorere andArray kolon NSArray 123 00:07:10,360 --> 00:07:13,240 matrix, hvis du ønsker bare en metode der tager i et argument. 124 00:07:13,240 --> 00:07:13,677 Ja, spørgsmål. 125 00:07:13,677 --> 00:07:18,701 >> PUBLIKUM: Er både NSUInteger og NSArray argumenter, der kan tages i 126 00:07:18,701 --> 00:07:21,530 i NSArray? 127 00:07:21,530 --> 00:07:22,060 >> RHED SHI: Ja. 128 00:07:22,060 --> 00:07:23,400 Så lad mig forklare. 129 00:07:23,400 --> 00:07:23,790 Så, ja. 130 00:07:23,790 --> 00:07:30,260 Så spørgsmålet var er NSUInteger og NSArray * typer af de argumenter, 131 00:07:30,260 --> 00:07:31,570 og det er korrekt. 132 00:07:31,570 --> 00:07:35,700 Så du altid ønsker at angive, hvad typen af ​​dit argument er. 133 00:07:35,700 --> 00:07:41,570 Og her, jeg prøver at introducere dig til nogle af syntaks og ordforråd af 134 00:07:41,570 --> 00:07:45,910 Objective-C, så dem er faktiske typer at du vil beskæftige sig med. 135 00:07:45,910 --> 00:07:48,970 >> Og som du lægger mærke, matrixer ikke længere, slags, 136 00:07:48,970 --> 00:07:50,780 simple beslag ting. 137 00:07:50,780 --> 00:07:52,060 De er objekter. 138 00:07:52,060 --> 00:07:56,700 Selv hvis vi går videre til den næste dias, kan vi se, at vi kan 139 00:07:56,700 --> 00:08:02,510 hard-code en NSArray i Objective-C med simpelthen en på symbol foran 140 00:08:02,510 --> 00:08:04,190 beslagene. 141 00:08:04,190 --> 00:08:08,650 Jeg er ikke, faktisk, helt sikker på, om Jeg syntaktisk hårdkodet et array 142 00:08:08,650 --> 00:08:16,020 korrekt for C-version, men det er formodes at være i en C array. 143 00:08:16,020 --> 00:08:19,760 >> Så det er sådan du vil, du ved, måske bruge funktioner eller 144 00:08:19,760 --> 00:08:21,990 metoder, som vi oprettede tidligere. 145 00:08:21,990 --> 00:08:22,250 Right? 146 00:08:22,250 --> 00:08:25,340 Så det er, hvor vi erklærer vores funktion og vores metode. 147 00:08:25,340 --> 00:08:28,020 Og nu ønsker vi at bruge dem i vores program, og det er 148 00:08:28,020 --> 00:08:29,450 hvordan vi ville gøre det. 149 00:08:29,450 --> 00:08:32,400 Så i C, ville du have, du ved, måske en bool b og du indstiller den til 150 00:08:32,400 --> 00:08:36,549 lig med funktionen, og derefter du passerer i argumenterne. 151 00:08:36,549 --> 00:08:39,190 >> I Objective-C, er det temmelig meget de samme ting. 152 00:08:39,190 --> 00:08:43,370 Du har NSArray * my_array, og det er kommer til at svare til - nu kun 153 00:08:43,370 --> 00:08:47,460 Forskellen her er dette objekt ting, som jeg har markeret med gult, og 154 00:08:47,460 --> 00:08:51,180 som du kan se, i C, der er ingen anden gul ord. 155 00:08:51,180 --> 00:08:54,170 Og det er fordi metoder hører med et bestemt objekt. 156 00:08:54,170 --> 00:08:59,800 Så det er derfor, jeg har brug for at have et objekt der, en slags, kalder denne metode på 157 00:08:59,800 --> 00:09:04,360 tallet nul, og derefter Den NSArray a, b, c, d. 158 00:09:04,360 --> 00:09:05,350 Eventuelle spørgsmål om det? 159 00:09:05,350 --> 00:09:12,190 >> Vi vil se disse begreber i aktion temmelig snart, når vi går ind i en demo. 160 00:09:12,190 --> 00:09:13,400 OK. 161 00:09:13,400 --> 00:09:17,170 Nu ønsker jeg at tale lidt kort om Xcode 5, som er 162 00:09:17,170 --> 00:09:21,160 integreret udviklingsmiljø at du skal arbejde med. 163 00:09:21,160 --> 00:09:26,160 Jeg kender en masse af jer, eller nogle af jer, ikke har Mac, hvilket er et problem 164 00:09:26,160 --> 00:09:30,490 fordi Xcode er ikke tilgængelig til Windows og PC. 165 00:09:30,490 --> 00:09:32,785 Spørg mig ikke hvorfor, men sandsynligvis - 166 00:09:32,785 --> 00:09:33,730 yeah, corporate. 167 00:09:33,730 --> 00:09:35,290 Uanset hvad. 168 00:09:35,290 --> 00:09:39,360 Men alligevel, så jeg undskylder, hvis nogle af du behøver at downloade en slags 169 00:09:39,360 --> 00:09:43,000 virtuel maskine til Mac i For at køre Xcode 5.. 170 00:09:43,000 --> 00:09:46,460 Men det er en temmelig fiks software til brug. 171 00:09:46,460 --> 00:09:51,280 >> Og så, før vi dykker ned i enhver slags af demo, jeg vil bare gerne vise dig en 172 00:09:51,280 --> 00:09:55,700 billede af, hvad Xcode ser ud i din vinduet, og derefter også tale om 173 00:09:55,700 --> 00:09:57,670 hvad hele dette rum er. 174 00:09:57,670 --> 00:10:01,600 Så det er lidt ligesom at lære at bruger Microsoft Word, medmindre du ønsker at 175 00:10:01,600 --> 00:10:04,675 blive fortrolig med alle de forskellige ting, 176 00:10:04,675 --> 00:10:06,250 er i gang her. 177 00:10:06,250 --> 00:10:11,160 >> Så det første, jeg vil pege dig til værktøjslinjen øverst. 178 00:10:11,160 --> 00:10:14,450 Du vil se, at der på toppen, har du filnavnet - 179 00:10:14,450 --> 00:10:18,100 eller faktisk, dit projekt navn og derefter dit filnavn. 180 00:10:18,100 --> 00:10:20,940 Vær opmærksom på leg og stop knapperne. 181 00:10:20,940 --> 00:10:24,210 Det er dem, som du vil være bruger til at køre din app på 182 00:10:24,210 --> 00:10:25,600 simulator - 183 00:10:25,600 --> 00:10:26,550 iOS simulator. 184 00:10:26,550 --> 00:10:29,940 Dette kommer automatisk med Xcode 5, så du ikke behøver at bekymre dig om 185 00:10:29,940 --> 00:10:32,070 downloade en slags simulator. 186 00:10:32,070 --> 00:10:34,700 Du skal bare trykke på play og så det kører din app. 187 00:10:34,700 --> 00:10:39,230 Og du kan lege med dig, og du vil se, hvordan det fungerer senere. 188 00:10:39,230 --> 00:10:42,690 >> Og så, i midten, er naturligvis hvor alle dine smukke kode er 189 00:10:42,690 --> 00:10:44,240 kommer til at gå. 190 00:10:44,240 --> 00:10:48,340 Og så, på den venstre side, vil du har denne, en slags, mappe - 191 00:10:48,340 --> 00:10:50,340 navigation - 192 00:10:50,340 --> 00:10:53,970 og så vil du også se, at sammen med mappeikonet, er der en 193 00:10:53,970 --> 00:10:57,680 bundt af andre ikoner der, vil være nyttige senere. 194 00:10:57,680 --> 00:11:04,710 >> Og så, på højre side er et hjælpeprogram område, hvor du kan arbejde med 195 00:11:04,710 --> 00:11:09,620 nogle af objekterne, og angiv, du vide, hvilken farve skal være, hvad 196 00:11:09,620 --> 00:11:12,040 skrifttypen skal være, et cetera. 197 00:11:12,040 --> 00:11:15,890 Selv alt, hvad du gør i bryggers område, kan du 198 00:11:15,890 --> 00:11:17,480 gøre i koden så godt. 199 00:11:17,480 --> 00:11:21,630 Og så vil jeg være at gå igennem to eksempler på brug, simpelthen ingen kode 200 00:11:21,630 --> 00:11:23,730 alle - eller meget minimal kode - 201 00:11:23,730 --> 00:11:28,290 vers al kode, bare så du fyre vide, hvad du kan og ikke kan gøre i 202 00:11:28,290 --> 00:11:29,260 Xcode og Objective-C. 203 00:11:29,260 --> 00:11:32,770 >> Og derefter endelig ned i bunden, har du debug-området. 204 00:11:32,770 --> 00:11:37,270 Så du ikke længere nødt til at køre GDB, et cetera, på dine programmer. 205 00:11:37,270 --> 00:11:39,180 Det gør det automatisk for dig. 206 00:11:39,180 --> 00:11:42,880 Og du kan også udskrive ting til dette område. 207 00:11:42,880 --> 00:11:46,790 Så faktisk, senere, vi vil gå igennem mario.c, hvis du fyre stadig huske 208 00:11:46,790 --> 00:11:49,000 at i Xcode. 209 00:11:49,000 --> 00:11:50,360 Så det skal være sjovt. 210 00:11:50,360 --> 00:11:55,870 >> Og så, bare for at bringe det tilbage til Objective-C, jeg ønsker at fremhæve, hvad 211 00:11:55,870 --> 00:11:57,440 du kan gøre med, hvis udsagn. 212 00:11:57,440 --> 00:12:03,160 Så, du ved, fordi Objective-C er en overordnet C, alt du skal gøre er, 213 00:12:03,160 --> 00:12:06,890 bogstaveligt, det samme som C. Du skal bare have små forskelle. 214 00:12:06,890 --> 00:12:10,810 Så vil du bemærke den formular til en hvis erklæring er stadig den samme - du har 215 00:12:10,810 --> 00:12:14,280 hvis og så har du en parentes med en tilstand inde i det, og derefter 216 00:12:14,280 --> 00:12:17,150 krøllede parenteser for hvad du ønsker at gøre indersiden af ​​der. 217 00:12:17,150 --> 00:12:21,680 >> Men jeg ønskede at sætte denne slide op her, blot for at illustrere, at 218 00:12:21,680 --> 00:12:25,680 fordi vi har at gøre med objekter nu vil vi nødt til at bruge disse ting 219 00:12:25,680 --> 00:12:31,240 kaldet som er lig med streng, som er tilfældigvis en fremgangsmåde til en 220 00:12:31,240 --> 00:12:33,710 streng eller NSString objekt. 221 00:12:33,710 --> 00:12:38,600 Så ord, i dette tilfælde, er en NSString objekt, og det har en metode, der kaldes, er 222 00:12:38,600 --> 00:12:44,150 svarende til snor, og så vi passerer i en hard-kodet streng at se 223 00:12:44,150 --> 00:12:48,110 hvorvidt de er lige til hinanden. 224 00:12:48,110 --> 00:12:51,580 >> Eventuelle spørgsmål, så vidt? 225 00:12:51,580 --> 00:12:52,440 OK. 226 00:12:52,440 --> 00:12:56,190 Og jeg ønsker at gå over en for erklæring også. 227 00:12:56,190 --> 00:13:01,420 >> Så for eksempel, hvis vi ønskede at sløjfe over længden af ​​en streng i C, hvilket 228 00:13:01,420 --> 00:13:03,710 bør være bekendt for dig. 229 00:13:03,710 --> 00:13:07,840 Og i Objective-C, vil jeg have at fremhæve dette, en slags, 230 00:13:07,840 --> 00:13:09,235 metode kaldet tæller. 231 00:13:09,235 --> 00:13:13,260 232 00:13:13,260 --> 00:13:15,550 Tja, faktisk, lad mig bare tage det tilbage. 233 00:13:15,550 --> 00:13:17,200 Count er en metode til array. 234 00:13:17,200 --> 00:13:21,070 Men det er mere specifikt en egenskab af array, hvilket er hvorfor du 235 00:13:21,070 --> 00:13:22,380 kan anvende dot notation. 236 00:13:22,380 --> 00:13:25,870 Men jeg ønsker ikke at komme ind i for meget af denne begrebsmæssige ting, jeg vil bare 237 00:13:25,870 --> 00:13:30,140 at vise dig, hvordan tingene ville se ud ligesom i Objective-C versus C. 238 00:13:30,140 --> 00:13:35,400 >> Og også, jeg ønsker at påpege, at selvom jeg har brugt NSUInteger 239 00:13:35,400 --> 00:13:39,860 foran alle mine i'er i Objective-C, du kan også bruge int, fordi int er 240 00:13:39,860 --> 00:13:42,290 fuldt gyldige i Objective-C, også. 241 00:13:42,290 --> 00:13:42,475 Ja? 242 00:13:42,475 --> 00:13:44,350 >> PUBLIKUM: Er det bare stilistiske, eller er - 243 00:13:44,350 --> 00:13:44,760 >> RHED SHI: Ja. 244 00:13:44,760 --> 00:13:46,060 Så, som du vil se - 245 00:13:46,060 --> 00:13:49,390 Så spørgsmålet var, er, at bare et stilistisk spørgsmål. 246 00:13:49,390 --> 00:13:54,820 Som du kan se, jeg har en, en slags, stjerne stjerne ting ned i bunden, og 247 00:13:54,820 --> 00:13:59,870 at link fører dig til en Stack Overflow dannes, hvor nogen forklarer 248 00:13:59,870 --> 00:14:03,640 forskellen mellem en int i NSInteger og en NSUInteger. 249 00:14:03,640 --> 00:14:05,540 Og så kan du læse om det senere. 250 00:14:05,540 --> 00:14:07,640 Disse slides vil være, selvfølgelig, til rådighed for dig. 251 00:14:07,640 --> 00:14:10,300 252 00:14:10,300 --> 00:14:11,280 >> Lad os se. 253 00:14:11,280 --> 00:14:12,150 OK, awesome. 254 00:14:12,150 --> 00:14:15,410 Så er det også i slide fordi jeg troede, det var en stor 255 00:14:15,410 --> 00:14:19,370 hjemmeside, der introducerer dig til mål-C syntaks. 256 00:14:19,370 --> 00:14:24,410 Så faktisk, hvorfor vi ikke flytter til Chrome og tjek denne hjemmeside? 257 00:14:24,410 --> 00:14:30,650 258 00:14:30,650 --> 00:14:31,300 >> Right. 259 00:14:31,300 --> 00:14:36,670 Så, hvad jeg vil vise dig fyre her er dette billede. 260 00:14:36,670 --> 00:14:41,630 Så dette er, en slags, kommer til at være, hvad du kommer til at se indersiden af ​​enhver 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 Faktisk, hvorfor vi ikke bare tage en øjeblik til, en slags, tage dette i. 264 00:14:51,430 --> 00:14:53,470 >> Så denne bog - 265 00:14:53,470 --> 00:14:55,880 det er det objekt, vi har at gøre med. 266 00:14:55,880 --> 00:14:59,680 Og så er det selvfølgelig vil være arvet fra en anden genstand, men 267 00:14:59,680 --> 00:15:01,810 du behøver ikke at bekymre dig om det. 268 00:15:01,810 --> 00:15:04,430 Og så det, måske, har nogle medlemsstater variabler. 269 00:15:04,430 --> 00:15:09,160 >> Det vigtige ting, jeg vil vise dig er instansmetoder, her. 270 00:15:09,160 --> 00:15:12,670 Så er instansmetoder betegnet af denne minustegn. 271 00:15:12,670 --> 00:15:15,550 Og så, som du vil opdage, er vi allerede begyndt at se paradigme 272 00:15:15,550 --> 00:15:17,670 for metode erklæring, right? 273 00:15:17,670 --> 00:15:22,670 Afkastet typen, metoden navn, og derefter den type argument, og 274 00:15:22,670 --> 00:15:24,660 derefter navnet af argumentet. 275 00:15:24,660 --> 00:15:29,090 Og dette minustegn betyder, at det er en eksempel metoden, hvilket betyder, at 276 00:15:29,090 --> 00:15:32,270 disse metoder er kun tilgængelige for objekter, der er instantieres. 277 00:15:32,270 --> 00:15:35,050 278 00:15:35,050 --> 00:15:39,100 >> Til kontrast, at metoder med et plus log ind foran dem er klasse 279 00:15:39,100 --> 00:15:43,640 metoder, hvilket betyder, at du kan ringe disse metoder, selvom du ikke har 280 00:15:43,640 --> 00:15:45,970 et objekt oprettet endnu. 281 00:15:45,970 --> 00:15:51,600 Så for en klart eksempel, NSString er en klasse. 282 00:15:51,600 --> 00:15:55,850 Og du kan ringe til, for eksempel, klasse metoder på NSString - 283 00:15:55,850 --> 00:15:58,660 den egentlige, ligesom, word NSString. 284 00:15:58,660 --> 00:16:02,050 >> Men for at bruge disse metoder, du rent faktisk 285 00:16:02,050 --> 00:16:03,460 nødt til at oprette en streng. 286 00:16:03,460 --> 00:16:08,980 For eksempel NSString stjerne streng lig ved anførselstegn, hej verden. 287 00:16:08,980 --> 00:16:10,910 Og så kan du bruge disse metoder - 288 00:16:10,910 --> 00:16:11,990 instansmetoder - 289 00:16:11,990 --> 00:16:14,790 på den hej verden streng. 290 00:16:14,790 --> 00:16:17,825 Så det er forskellen mellem instansmetoder og klasse metoder. 291 00:16:17,825 --> 00:16:20,390 292 00:16:20,390 --> 00:16:21,930 >> Og, vi bare dækket denne del. 293 00:16:21,930 --> 00:16:25,300 294 00:16:25,300 --> 00:16:33,750 Ejendomme er en anden ting, der er indersiden af ​​objekter, dybest set. 295 00:16:33,750 --> 00:16:37,530 Og du erklære dem med den på ejendommen søgeord. 296 00:16:37,530 --> 00:16:39,940 Du har disse muligheder, her, at jeg vil forklare senere, når 297 00:16:39,940 --> 00:16:43,110 vi går ind 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 >> PUBLIKUM: Kan du zoome ind, tak? 301 00:16:45,440 --> 00:16:46,130 >> RHED SHI: Åh ja. 302 00:16:46,130 --> 00:16:46,560 Undskyld. 303 00:16:46,560 --> 00:16:49,140 >> PUBLIKUM: Tak. 304 00:16:49,140 --> 00:16:50,005 >> RHED SHI: Det bør være meget bedre. 305 00:16:50,005 --> 00:16:51,240 >> PUBLIKUM: Ja. 306 00:16:51,240 --> 00:16:53,940 Tak. 307 00:16:53,940 --> 00:16:56,815 >> RHED SHI: Ja, mind mig om Jeg glemmer at zoome ind eller ud. 308 00:16:56,815 --> 00:17:00,590 309 00:17:00,590 --> 00:17:03,570 Så det er alt, jeg ønskede for at vise dig for - 310 00:17:03,570 --> 00:17:05,970 whoa, det er en masse - 311 00:17:05,970 --> 00:17:06,790 til dette websted. 312 00:17:06,790 --> 00:17:12,210 Så lad os gå tilbage til vores dias. 313 00:17:12,210 --> 00:17:17,819 >> Faktisk, nu lad os tage et øjeblik at dykke ned i en demo. 314 00:17:17,819 --> 00:17:25,490 Så vil vi starte med en ny Xcode projekt. 315 00:17:25,490 --> 00:17:33,040 Så hvis du vil åbne Xcode på alle maskinerne, bør det tage dig lidt 316 00:17:33,040 --> 00:17:36,720 side, hvor der står, ligesom enten åbent op et eksisterende projekt eller en ny 317 00:17:36,720 --> 00:17:39,230 projekt, og du bør Klik på et nyt projekt. 318 00:17:39,230 --> 00:17:41,477 Og så skal det tage dig til dette skærmbillede. 319 00:17:41,477 --> 00:17:41,593 Ja? 320 00:17:41,593 --> 00:17:44,279 >> PUBLIKUM: Hvis vi ikke har en Mac, vi bare lidt chill? 321 00:17:44,279 --> 00:17:46,870 >> RHED SHI: Eller se på med nogen, ja. 322 00:17:46,870 --> 00:17:47,740 Ja. 323 00:17:47,740 --> 00:17:50,660 Du kan slappe af, også. 324 00:17:50,660 --> 00:17:51,570 OK. 325 00:17:51,570 --> 00:17:55,410 >> Så, hvad vi skal gøre først, nu, er faktisk, vi kommer til at gøre en 326 00:17:55,410 --> 00:17:56,600 enkelt visning ansøgning. 327 00:17:56,600 --> 00:18:01,340 Så hvis du vil opdage, hvad der er stor om Xcode og Apple support til 328 00:18:01,340 --> 00:18:05,690 udviklere er, at du har en masse skabeloner til at arbejde med allerede. 329 00:18:05,690 --> 00:18:09,210 Du kan for eksempel gøre en mester-detalje ansøgning. 330 00:18:09,210 --> 00:18:10,920 Du kan lave et spil - 331 00:18:10,920 --> 00:18:13,860 og faktisk vil jeg ikke gå ind i spil, fordi spil er en anden historie 332 00:18:13,860 --> 00:18:15,320 til iOS udvikling. 333 00:18:15,320 --> 00:18:18,930 Og de er slags adskilt, så jeg vil ikke gå ind i det. 334 00:18:18,930 --> 00:18:22,580 >> Så du har side-baserede applikationer. 335 00:18:22,580 --> 00:18:24,010 Du har en fane ansøgning - 336 00:18:24,010 --> 00:18:29,350 så gerne, for eksempel, Bank of America sandsynligvis har, ligesom, en tabbed app. 337 00:18:29,350 --> 00:18:32,140 Det er dem, hvor du har knapperne forneden. 338 00:18:32,140 --> 00:18:34,750 Og så har du en Sprite Kit spil. 339 00:18:34,750 --> 00:18:38,670 >> Eller du kan arbejde fra bunden, hvilket er, hvad vi vil gøre senere. 340 00:18:38,670 --> 00:18:42,470 Men lad os først starte med en enkelt visning ansøgning. 341 00:18:42,470 --> 00:18:48,590 Derefter vil det bede om et produktnavn, og vi kan bare gøre test. 342 00:18:48,590 --> 00:18:50,190 Organisationens navn - 343 00:18:50,190 --> 00:18:54,140 så, organisationens navn, selskab identifier - 344 00:18:54,140 --> 00:18:58,100 de er vigtige, hvis du vil at sætte din app på App Store. 345 00:18:58,100 --> 00:19:01,110 346 00:19:01,110 --> 00:19:05,116 Andre end det, er din kode kommer til at køre helt fint uden dette. 347 00:19:05,116 --> 00:19:09,940 >> Det vil være vigtigt, hvis du ønsker - så sig selv, ligesom, sætte din app 348 00:19:09,940 --> 00:19:14,080 på din telefon eller noget, og test det ud, du ved, i det virkelige liv - 349 00:19:14,080 --> 00:19:15,360 dette vil være vigtigt. 350 00:19:15,360 --> 00:19:20,110 Denne tendens til at normalt være forbundet med en slags developer konto 351 00:19:20,110 --> 00:19:20,970 med Apple. 352 00:19:20,970 --> 00:19:24,740 >> Og så ved jeg, sandsynligvis en masse af jer vil ikke have nogen udviklerkonti. 353 00:19:24,740 --> 00:19:26,460 Jeg kender universitetet har en. 354 00:19:26,460 --> 00:19:27,630 Jeg tror CS har en. 355 00:19:27,630 --> 00:19:32,770 Men, kan du kontakte mig og jeg vil prøve at regne det ud for dig. 356 00:19:32,770 --> 00:19:38,210 Men lige nu har jeg bare sat i nogle pladsholder ting her. 357 00:19:38,210 --> 00:19:41,250 >> Og du kan selvfølgelig her, vælg om du vil have det til at være alene 358 00:19:41,250 --> 00:19:44,410 iPhone, i iPad, eller begge dele - 359 00:19:44,410 --> 00:19:46,630 universel anvendelse. 360 00:19:46,630 --> 00:19:56,170 Så for nu, lad os gøre universel, bare at se begge sider af platformen. 361 00:19:56,170 --> 00:19:57,120 >> Lad os se. 362 00:19:57,120 --> 00:20:01,510 Så lige nu, jeg kommer til at spare det i en slags mappe. 363 00:20:01,510 --> 00:20:04,500 Betyder ikke noget, hvor - du kan altid flytte det senere. 364 00:20:04,500 --> 00:20:09,380 Og nu er vi bragt vores Xcode projekt. 365 00:20:09,380 --> 00:20:12,890 Jeg ville ikke bekymre dig om alt dette. 366 00:20:12,890 --> 00:20:17,510 Jeg foreslår ikke at røre nogen af dette, medmindre du ved præcis, hvad 367 00:20:17,510 --> 00:20:18,260 du laver. 368 00:20:18,260 --> 00:20:21,750 Så alt dette, bare ignorere for det meste. 369 00:20:21,750 --> 00:20:26,940 Du behøver ikke at røre ved den, og hvis du du rod op nogle ting her, det 370 00:20:26,940 --> 00:20:28,600 bliver lidt tricky. 371 00:20:28,600 --> 00:20:32,480 >> Så hvorfor ikke vi ser ind filerne på 372 00:20:32,480 --> 00:20:34,700 venstre side i vores navigator. 373 00:20:34,700 --> 00:20:37,060 Her har vi AppDelegate.h. 374 00:20:37,060 --> 00:20:43,430 Vi har AppDelegate.m Så, som du vil varsel, har vi header filer, som 375 00:20:43,430 --> 00:20:45,720 ende i dot h, og vi har implementering - 376 00:20:45,720 --> 00:20:46,970 faktisk, lad mig zoome ind 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 Lad mig zoome ind 380 00:20:59,940 --> 00:21:05,810 >> Right, så du har header filer og du har gennemførelsen filer. 381 00:21:05,810 --> 00:21:07,060 Faktisk - 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 er lidt underligt, men bær over med mig. 385 00:21:11,800 --> 00:21:16,140 Derefter, fordi vi har valgt en enkelt visning ansøgning, vi kommer til at være 386 00:21:16,140 --> 00:21:17,340 arbejde med storyboard. 387 00:21:17,340 --> 00:21:22,140 >> Så storyboard er noget, som Apple er kommet op med for virkelig at hjælpe 388 00:21:22,140 --> 00:21:26,550 udviklere hurtigt prototype deres ansøgninger. 389 00:21:26,550 --> 00:21:29,410 Så det er, hvor du kan oprette en app uden at skrive en 390 00:21:29,410 --> 00:21:31,710 eneste linje kode. 391 00:21:31,710 --> 00:21:35,390 Men i vores enkelt visning ansøgning, Vi skal naturligvis have en 392 00:21:35,390 --> 00:21:41,270 filen for vores opfattelse, som er en afbildning controller. 393 00:21:41,270 --> 00:21:45,150 Så vi har sidehovedet og implementering fil her. 394 00:21:45,150 --> 00:21:52,350 >> Og jeg har tænkt mig at zoome ud nu, fordi vi bliver nødt til at arbejde i storyboard. 395 00:21:52,350 --> 00:21:55,190 Så her er vores opfattelse. 396 00:21:55,190 --> 00:22:00,120 Hvis vi blot køre app lige nu, der er ikke meget spændende foregår. 397 00:22:00,120 --> 00:22:03,270 398 00:22:03,270 --> 00:22:05,040 Så vil du se denne hvid skærm. 399 00:22:05,040 --> 00:22:06,110 OK? 400 00:22:06,110 --> 00:22:14,010 >> Og i vores forsyningsvirksomheder område, kan vi tilføje en masse forskellige ting til det. 401 00:22:14,010 --> 00:22:19,290 Så når du har at gøre med skærme i iOS, se controllere er den 402 00:22:19,290 --> 00:22:23,150 objekter, der indkapsler, slags, dine synspunkter. 403 00:22:23,150 --> 00:22:26,980 Så en visning controller altid har en ejendom kaldet visning. 404 00:22:26,980 --> 00:22:29,610 Og denne opfattelse, typisk indeholder du ved, hvad du 405 00:22:29,610 --> 00:22:30,810 ønsker at se på en skærm. 406 00:22:30,810 --> 00:22:39,210 >> Så ja, lad os bare starte med at sætte, måske, måske en etiket. 407 00:22:39,210 --> 00:22:41,450 Så lad os sætte en etiket på der - 408 00:22:41,450 --> 00:22:44,080 holde det i midten. 409 00:22:44,080 --> 00:22:49,560 Så nu, at jeg har klikket på etiketten, jeg kan gå ind i egenskaberne inspektør 410 00:22:49,560 --> 00:22:51,510 og begynder at ændre sin værdi. 411 00:22:51,510 --> 00:22:55,040 Lad os kalde det CS50 Colours. 412 00:22:55,040 --> 00:22:58,220 >> Og kan jeg også ændre skrifttype. 413 00:22:58,220 --> 00:23:02,630 Så i stedet for at gøre system, som er standard, kan vi gøre en brugerdefineret én. 414 00:23:02,630 --> 00:23:03,770 Vi kan ændre sig - 415 00:23:03,770 --> 00:23:06,453 du ved, ultralette, gør det 32. 416 00:23:06,453 --> 00:23:09,000 417 00:23:09,000 --> 00:23:11,370 Og så kan vi gøre vores kasse større. 418 00:23:11,370 --> 00:23:14,410 >> PUBLIKUM: Tror du, du kan zoome på bare lidt mere, måske? 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 >> PUBLIKUM: Bare tryk på det? 422 00:23:17,450 --> 00:23:19,020 >> RHED SHI: Lad os se. 423 00:23:19,020 --> 00:23:20,382 Er dette arbejde? 424 00:23:20,382 --> 00:23:22,270 >> PUBLIKUM: Bare passere Xcode? 425 00:23:22,270 --> 00:23:23,520 >> RHED SHI: Selvfølgelig. 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 >> PUBLIKUM: Etiketten under? 430 00:23:27,072 --> 00:23:28,920 Etiketten? 431 00:23:28,920 --> 00:23:29,480 >> RHED SHI: Hvad er det? 432 00:23:29,480 --> 00:23:32,050 >> PUBLIKUM: Hvad drop-down var mærket under? 433 00:23:32,050 --> 00:23:35,170 >> RHED SHI: Så spørgsmålet var, hvad drop-down var etiketten under? 434 00:23:35,170 --> 00:23:37,260 Det skal simpelthen være under her. 435 00:23:37,260 --> 00:23:39,330 Jeg tror det er en terning ting. 436 00:23:39,330 --> 00:23:40,910 Men som regel, dette er standard - 437 00:23:40,910 --> 00:23:43,250 Jeg bare hernede indtil jeg finder en etiket. 438 00:23:43,250 --> 00:23:45,800 439 00:23:45,800 --> 00:23:47,730 Ja. 440 00:23:47,730 --> 00:23:48,950 >> Så nu har vi vores label. 441 00:23:48,950 --> 00:23:51,040 Lad os centrere det. 442 00:23:51,040 --> 00:23:56,410 Og Xcode giver os retningslinjer til centrering objekter. 443 00:23:56,410 --> 00:23:59,510 444 00:23:59,510 --> 00:24:01,480 Så lad os nu køre vores kode igen. 445 00:24:01,480 --> 00:24:08,110 446 00:24:08,110 --> 00:24:08,800 >> Der vi går. 447 00:24:08,800 --> 00:24:10,310 Så vi har CS50 Colours. 448 00:24:10,310 --> 00:24:13,720 449 00:24:13,720 --> 00:24:15,420 Og nu, lad os sætte en knap på der, ikke? 450 00:24:15,420 --> 00:24:17,480 Fordi vi ønsker at gøre denne interaktive. 451 00:24:17,480 --> 00:24:19,410 Så lad os sætte en knap her. 452 00:24:19,410 --> 00:24:39,020 Og vi vil kalde denne knap "tap her for at fortsætte. "Vi vil centrere det, også 453 00:24:39,020 --> 00:24:39,990 Faktisk er det allerede centreret. 454 00:24:39,990 --> 00:24:40,630 Ja. 455 00:24:40,630 --> 00:24:43,130 >> Så nu har vi en knap. 456 00:24:43,130 --> 00:24:53,000 Og hvis vi kører det igen, vil vi at have en dejlig lille knap her. 457 00:24:53,000 --> 00:24:56,520 Og jeg kan klikke på det, men det gør ikke noget, fordi vi ikke har gjort 458 00:24:56,520 --> 00:24:58,500 noget med knappen endnu. 459 00:24:58,500 --> 00:25:01,740 >> Så lad os skabe en anden mening, right? 460 00:25:01,740 --> 00:25:04,160 Så lad os sige, at jeg ønsker at udnytte at knap og jeg ønsker at 461 00:25:04,160 --> 00:25:05,730 gå til en anden side - 462 00:25:05,730 --> 00:25:06,820 en anden opfattelse. 463 00:25:06,820 --> 00:25:14,440 Hvad jeg har tænkt mig at gøre, er, kan jeg oprette en visning controller, right? 464 00:25:14,440 --> 00:25:19,690 Nu vil jeg klikker på min knap, og derefter, det vigtigste er, jeg har tænkt mig at 465 00:25:19,690 --> 00:25:20,910 klik - eller - 466 00:25:20,910 --> 00:25:23,660 ja, skal du trykke på kontrol på mit tastatur. 467 00:25:23,660 --> 00:25:24,880 Kontrol. 468 00:25:24,880 --> 00:25:27,005 Klik på knappen, og derefter trække. 469 00:25:27,005 --> 00:25:29,960 470 00:25:29,960 --> 00:25:33,550 >> Så husk at holde Ctrl-tasten. 471 00:25:33,550 --> 00:25:35,160 Lad os gøre det igen. 472 00:25:35,160 --> 00:25:40,930 Så holde kontrol, klik, og træk til, hvad du ønsker at gøre. 473 00:25:40,930 --> 00:25:41,520 OK. 474 00:25:41,520 --> 00:25:43,610 >> Og nu, jeg har flere muligheder her. 475 00:25:43,610 --> 00:25:47,900 Jeg kan enten skubbe, eller jeg kan gøre en modal, eller jeg kan gøre en brugerdefineret. 476 00:25:47,900 --> 00:25:50,900 Push er kun hvis du har en navigations-controlleren. 477 00:25:50,900 --> 00:25:54,270 Lige nu vores allerførste visning regulatoren er ikke inde i noget 478 00:25:54,270 --> 00:25:55,610 navigations-controlleren. 479 00:25:55,610 --> 00:25:59,500 Så navigations-controlleren er den ene der giver dig den tilbage-knap på 480 00:25:59,500 --> 00:26:03,910 iOS app, hvor du har, du ved, at top, en slags, tyk bar - 481 00:26:03,910 --> 00:26:06,480 hvor du kan gå tilbage, eller fremad, et cetera. 482 00:26:06,480 --> 00:26:07,740 Lige nu har jeg ikke det. 483 00:26:07,740 --> 00:26:11,050 Og ja, det er derfor jeg ikke kan gøre et skub. 484 00:26:11,050 --> 00:26:12,480 >> Så jeg klikkede på tryk uheld, her. 485 00:26:12,480 --> 00:26:16,480 Og faktisk, lad os køre koden, og det bør gå ned på mig. 486 00:26:16,480 --> 00:26:19,770 487 00:26:19,770 --> 00:26:22,960 Kun hvis jeg trykker på knappen selv om, så - 488 00:26:22,960 --> 00:26:23,420 højre. 489 00:26:23,420 --> 00:26:26,480 Så det er dårligt. 490 00:26:26,480 --> 00:26:31,330 >> Og som du kan se her, vi have fejlmeddelelsen. 491 00:26:31,330 --> 00:26:35,460 Så "Push segues kan kun bruges, når kilde controller forvaltes af en 492 00:26:35,460 --> 00:26:40,700 forekomst af UI navigations-controlleren. " , Fordi dette ikke var inde i en 493 00:26:40,700 --> 00:26:44,030 navigations-controlleren, Jeg kunne ikke gøre det. 494 00:26:44,030 --> 00:26:48,782 >> Så lige nu vil jeg tilbage til mappe, der går tilbage til storyboard. 495 00:26:48,782 --> 00:26:51,680 >> PUBLIKUM: Hvad er navigation controller, igen? 496 00:26:51,680 --> 00:26:55,260 >> RHED SHI: Så lige nu skal jeg vise dig. 497 00:26:55,260 --> 00:26:56,200 Lad os se. 498 00:26:56,200 --> 00:27:00,510 Så jeg har tænkt mig at klikke på dette synspunkt controller, og så jeg har tænkt mig at gå 499 00:27:00,510 --> 00:27:03,920 op til produkt - 500 00:27:03,920 --> 00:27:06,240 faktisk, nej, undskyld - editor. 501 00:27:06,240 --> 00:27:08,360 Og jeg har tænkt mig at gå ind i - 502 00:27:08,360 --> 00:27:09,350 faktisk, jeg klikker på det? 503 00:27:09,350 --> 00:27:10,070 Nej. 504 00:27:10,070 --> 00:27:11,080 Der vi går. 505 00:27:11,080 --> 00:27:16,270 Jeg har tænkt mig at gå op i editor, gå ned at integrere i, og derefter navigation 506 00:27:16,270 --> 00:27:17,520 controller. 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 Og mit arbejdsområde ser virkelig rodet, så lad os rydde op. 510 00:27:27,750 --> 00:27:29,000 Så alt dette er storyboard. 511 00:27:29,000 --> 00:27:32,510 512 00:27:32,510 --> 00:27:33,760 Og på denne måde - 513 00:27:33,760 --> 00:27:37,030 514 00:27:37,030 --> 00:27:38,280 OK, stop - 515 00:27:38,280 --> 00:27:49,320 516 00:27:49,320 --> 00:27:50,860 Jeg kan hurtigt bygge noget som dette. 517 00:27:50,860 --> 00:27:53,020 Og så, nu kan jeg gå tilbage, du kender? 518 00:27:53,020 --> 00:27:55,730 >> Men det er lidt kedeligt, ikke? 519 00:27:55,730 --> 00:28:03,020 Så, hvad jeg vil gøre, er, jeg vil ikke have at gøre, simpelthen, en visning 520 00:28:03,020 --> 00:28:03,870 controller. 521 00:28:03,870 --> 00:28:07,720 Lad os sige, jeg ville faktisk gøre en tabelvisning controller, så jeg kan sætte i 522 00:28:07,720 --> 00:28:12,110 nogle flotte farver, i tabellen. 523 00:28:12,110 --> 00:28:16,210 >> Så nu, at jeg har lagt i mit bord visning controller, jeg har brug for at tilslutte den tilbage 524 00:28:16,210 --> 00:28:18,560 fra denne knap til view controller. 525 00:28:18,560 --> 00:28:21,780 Så jeg nødt til at gøre min kontrol, klik, drag ting igen. 526 00:28:21,780 --> 00:28:27,318 Og nu kan jeg gøre skubbe, fordi jeg integrere det inde i en navigations-controlleren. 527 00:28:27,318 --> 00:28:32,210 >> PUBLIKUM: Navigation controller bare giver dig mulighed for at gå fra sted til sted? 528 00:28:32,210 --> 00:28:33,540 >> RHED SHI: Ja. 529 00:28:33,540 --> 00:28:38,670 Så mere teknisk, er det et objekt, hvor - 530 00:28:38,670 --> 00:28:43,150 så indersiden af ​​navigationen controller objekt, det 531 00:28:43,150 --> 00:28:44,780 holder styr på et array. 532 00:28:44,780 --> 00:28:48,300 Og at vifte besidder alle de efterfølgende se controllere. 533 00:28:48,300 --> 00:28:51,560 Det er derfor, når du trykker tilbage, er det går tilbage til forrige side. 534 00:28:51,560 --> 00:28:55,260 Fordi navigations-controlleren objekt, eller den kode, der tager sig af 535 00:28:55,260 --> 00:28:58,890 dette formål har en matrix, der holder styr på disse visning controllere, og 536 00:28:58,890 --> 00:29:01,870 kan derefter, ved du, dq visningen controller og give dig tilbage 537 00:29:01,870 --> 00:29:02,750 tidligere. 538 00:29:02,750 --> 00:29:05,200 >> Så dette er tekniske ting, men - 539 00:29:05,200 --> 00:29:07,505 og jeg vil vise dig senere i kode, hvis vi har tid. 540 00:29:07,505 --> 00:29:10,270 Jeg er lidt at løbe ud på tid, men - 541 00:29:10,270 --> 00:29:15,610 >> Så med tabel visning, hvad vi kan gøre, er - 542 00:29:15,610 --> 00:29:18,440 Det er sat som regel automatisk til Dynamic Prototype - 543 00:29:18,440 --> 00:29:20,640 vi kommer til at gøre det Statiske Cells, ellers vil vi 544 00:29:20,640 --> 00:29:22,920 løbe ind i nogle problemer. 545 00:29:22,920 --> 00:29:28,470 >> Og så, lad os sige, at jeg har tænkt mig at have en sektion. 546 00:29:28,470 --> 00:29:31,000 Så sektioner er ligesom - 547 00:29:31,000 --> 00:29:35,160 hvis du nogensinde har set musik app, når du har kunstnere, sektioner ville 548 00:29:35,160 --> 00:29:37,830 være A'er gennem Z's - 549 00:29:37,830 --> 00:29:38,780 bogstaverne - 550 00:29:38,780 --> 00:29:42,600 og så, du ved, den enkelte rækker ville være kunstnernavne. 551 00:29:42,600 --> 00:29:47,460 Og ja, hvad er cool her, er, at jeg kan adgang til alle objekter inde 552 00:29:47,460 --> 00:29:50,430 min storyboard gennem denne drop-down menu, også. 553 00:29:50,430 --> 00:29:56,600 >> Så jeg har tænkt mig at klikke på mit sektion, og jeg vil, du ved, måske fem rækker. 554 00:29:56,600 --> 00:30:00,770 Og derefter inde i hver række, Jeg ønsker at sætte en etiket. 555 00:30:00,770 --> 00:30:04,080 556 00:30:04,080 --> 00:30:06,340 Og jeg har tænkt mig at kalde dette Blå. 557 00:30:06,340 --> 00:30:09,530 558 00:30:09,530 --> 00:30:15,630 Og så, jeg ønsker at sætte en UI visning, du ved, måske for, ligesom, en lille boks. 559 00:30:15,630 --> 00:30:23,840 560 00:30:23,840 --> 00:30:28,710 >> Så jeg kan vise folk et eksempel på farven. 561 00:30:28,710 --> 00:30:34,150 Og jeg vil gå tilbage til ejendommen og ændre denne farve til, åh, det gør jeg ikke 562 00:30:34,150 --> 00:30:35,510 ved, er dette ene. 563 00:30:35,510 --> 00:30:38,630 564 00:30:38,630 --> 00:30:43,150 >> Og så bemærker også, her, når jeg har tilbehør, kan jeg have masser 565 00:30:43,150 --> 00:30:46,160 af de forskellige tilbehør at du typisk ser. 566 00:30:46,160 --> 00:30:55,250 Offentliggørelsen indikator, den detalje, eller flueben, eller simpelthen bare detaljer. 567 00:30:55,250 --> 00:30:59,080 Så måske kan vi gøre, ligesom, en afsløring indikator, for eksempel. 568 00:30:59,080 --> 00:31:03,540 >> Og så, hvorfor vi ikke tager disse, kopi indsætte dem, og sætte dem i 569 00:31:03,540 --> 00:31:06,740 næste tabelrække. 570 00:31:06,740 --> 00:31:08,115 Så kan vi kalde dette Gul. 571 00:31:08,115 --> 00:31:10,620 572 00:31:10,620 --> 00:31:12,155 Og jeg måske nødt til at udvide dette. 573 00:31:12,155 --> 00:31:15,730 574 00:31:15,730 --> 00:31:17,290 Lad os gøre det gul. 575 00:31:17,290 --> 00:31:20,610 Og på denne måde, kan vi kopiere indsætte vores vej ned. 576 00:31:20,610 --> 00:31:24,910 577 00:31:24,910 --> 00:31:25,370 Hvad var det? 578 00:31:25,370 --> 00:31:26,620 Lilla. 579 00:31:26,620 --> 00:31:30,020 580 00:31:30,020 --> 00:31:34,740 >> Så disse er alle de typiske CS50 farver, som du har set i klassen - 581 00:31:34,740 --> 00:31:37,160 faktisk, undskyld - 582 00:31:37,160 --> 00:31:38,410 eller på hjemmesiden. 583 00:31:38,410 --> 00:31:49,700 584 00:31:49,700 --> 00:31:51,260 Forhåbentlig du fyre kan se hvad jeg laver her. 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 Sidste. 588 00:31:58,490 --> 00:32:02,040 >> PUBLIKUM: Hvordan har du tilføjer rækken oprindeligt? 589 00:32:02,040 --> 00:32:04,740 >> RHED SHI: Så spørgsmålet var, hvordan jeg tilføje rækken oprindeligt? 590 00:32:04,740 --> 00:32:07,500 Jeg gik ind i denne tabel sektion - eller men jeg kan 591 00:32:07,500 --> 00:32:09,200 vælge tabellen sektion - 592 00:32:09,200 --> 00:32:11,250 og så her, jeg opdaterede antallet af rækker. 593 00:32:11,250 --> 00:32:19,920 594 00:32:19,920 --> 00:32:22,505 >> Og lad mig håbe, at det virker. 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 Lad os se, om det virker. 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 Mens jeg var ved at bygge op min demo, nogle ting var ikke justeret, så tak for 601 00:32:40,330 --> 00:32:42,510 bifald. 602 00:32:42,510 --> 00:32:42,920 >> Ja. 603 00:32:42,920 --> 00:32:44,770 Så lad os se. 604 00:32:44,770 --> 00:32:47,550 Vi vil gøre dette ni bare for at gøre alt - eller faktisk, lad os bare 605 00:32:47,550 --> 00:32:51,420 slå alle disse i afsløring indikatorer. 606 00:32:51,420 --> 00:32:55,790 Og så, hvad jeg vil vise dig, også, var, hvordan jeg kan tage hver enkelt af dem 607 00:32:55,790 --> 00:32:59,230 tabelrækker og få dem interagere - 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 Også, jeg vil vise dig - 613 00:33:07,230 --> 00:33:13,080 her, kan jeg sætte titlen på min navigations-controlleren, right? 614 00:33:13,080 --> 00:33:17,090 Så faktisk, vil du bemærke, så snart jeg indlejret denne visning controller inde 615 00:33:17,090 --> 00:33:22,010 af navigations-controlleren, ser vi denne navigationslinje øverst på vores 616 00:33:22,010 --> 00:33:25,340 storyboard repræsentation af en visning controller. 617 00:33:25,340 --> 00:33:29,270 Og så giver det os, ligesom, en visuel, slags, guide til vores synlige skærm. 618 00:33:29,270 --> 00:33:34,360 Dette er naturligvis vil være navigationslinjen. 619 00:33:34,360 --> 00:33:40,950 >> Og hvad jeg ønsker at gøre hurtigt, nu er sat i en anden - 620 00:33:40,950 --> 00:33:45,880 så denne tabel view controller jeg gjorde ved at tage en af ​​disse, og trække det 621 00:33:45,880 --> 00:33:49,800 her, og det er hvad der tilladt mig at hurtigt, virkelig, oprette en tabel visning 622 00:33:49,800 --> 00:33:50,850 controller. 623 00:33:50,850 --> 00:33:54,100 Hvis vi har tid selv, vil du se, at programmatisk, det er en 624 00:33:54,100 --> 00:33:57,660 lidt mere tricky at oprette en tabel visning controller, fordi der 625 00:33:57,660 --> 00:34:02,520 er et par metoder, der er kræves for dig at, en slags, skrive 626 00:34:02,520 --> 00:34:07,130 i For tabelvisningen controller til at blive vist korrekt. 627 00:34:07,130 --> 00:34:15,340 >> Men jeg vil bare gerne vise dig, nu, et eksempel på, hvor, hvis jeg tager det, 628 00:34:15,340 --> 00:34:15,920 for eksempel - 629 00:34:15,920 --> 00:34:18,290 Jeg har sat i en anden visning controller. 630 00:34:18,290 --> 00:34:27,320 Og nu, lad os sige, at jeg ønsker at styre Altogether min allerførste blå 631 00:34:27,320 --> 00:34:28,980 tabelrække til her. 632 00:34:28,980 --> 00:34:31,070 Og jeg vil kalde denne Blå. 633 00:34:31,070 --> 00:34:32,570 Og så - 634 00:34:32,570 --> 00:34:34,159 lad os se. 635 00:34:34,159 --> 00:34:41,050 Jeg er på visningen nu, og jeg kan ændre baggrunden til blå. 636 00:34:41,050 --> 00:34:45,945 >> Og så, varsel, her, denne drop-down Menuen giver dig også et hierarki af alle 637 00:34:45,945 --> 00:34:47,040 af disse objekter. 638 00:34:47,040 --> 00:34:50,530 Så en vigtig ting at bemærke her, er, at alle disse ting, her - 639 00:34:50,530 --> 00:34:54,330 denne tabel view controller, bordet visning, tabelvisning sektion, bord view 640 00:34:54,330 --> 00:34:57,169 celle - alle disse er objekter i kode. 641 00:34:57,169 --> 00:35:03,752 Så, du ved, en etiket lige nu er under indholdet visning, et cetera. 642 00:35:03,752 --> 00:35:05,020 Så videre og så videre. 643 00:35:05,020 --> 00:35:08,765 >> Så hvis vi køre denne kode, vi skulle se noget - 644 00:35:08,765 --> 00:35:15,816 645 00:35:15,816 --> 00:35:17,870 lad os se om det - ja. 646 00:35:17,870 --> 00:35:18,670 Så der går vi. 647 00:35:18,670 --> 00:35:22,120 Men hvis vi ikke gør det, ingen af disse andre ting virker. 648 00:35:22,120 --> 00:35:22,500 Right? 649 00:35:22,500 --> 00:35:23,800 Så kun denne ene virker. 650 00:35:23,800 --> 00:35:29,100 Og af hensyn til tiden, det vil jeg ikke gå ind, du ved, at sætte 651 00:35:29,100 --> 00:35:29,770 ned de andre. 652 00:35:29,770 --> 00:35:32,020 Og dette er slutningen af, slags, storyboard - 653 00:35:32,020 --> 00:35:33,400 hvad jeg ønskede at vise dig til storyboard. 654 00:35:33,400 --> 00:35:36,330 655 00:35:36,330 --> 00:35:43,490 >> Og jeg har en gennemarbejdet eksempel, faktisk, lige her. 656 00:35:43,490 --> 00:35:48,090 Så dette er storyboard at jeg gjorde tidligere. 657 00:35:48,090 --> 00:35:52,740 Så, som du kan se, var denne min navigations-controlleren. 658 00:35:52,740 --> 00:35:57,040 Så jeg havde min første visning controller, så havde jeg min tabel view-controller, 659 00:35:57,040 --> 00:35:58,980 og derefter havde jeg alle disse - 660 00:35:58,980 --> 00:36:01,180 så tidligere, var jeg gør noget helt andet. 661 00:36:01,180 --> 00:36:04,450 Så, undskyld disse ting. 662 00:36:04,450 --> 00:36:07,930 Jeg skal nok rense det op senere før Jeg sender det ud til produktionen. 663 00:36:07,930 --> 00:36:12,800 >> Men hvis vi køre dette, vil vi se at alle muligheder er 664 00:36:12,800 --> 00:36:14,050 til rådighed for os. 665 00:36:14,050 --> 00:36:18,540 666 00:36:18,540 --> 00:36:21,320 Bortset fra jeg ikke gøre baggrunde disse farver. 667 00:36:21,320 --> 00:36:26,510 Så dejlig simpel applikation. 668 00:36:26,510 --> 00:36:28,340 >> Lad os nu prøve at løse denne programmering. 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å for at gøre det, vi bare at starte et nyt Xcode projekt. 672 00:36:37,570 --> 00:36:41,920 Vi vil gøre det til en tom ansøgning nu, fordi vi ikke ønsker at have den 673 00:36:41,920 --> 00:36:42,380 storyboard. 674 00:36:42,380 --> 00:36:46,590 Så jeg blot at begrænse mig til ikke bruge nogen af ​​storyboard, og en 675 00:36:46,590 --> 00:36:49,170 tom ansøgning vil ikke giv mig et storyboard. 676 00:36:49,170 --> 00:36:52,256 Dette er blot at forhindre mig selv fra at snyde. 677 00:36:52,256 --> 00:36:54,428 Lad os se. 678 00:36:54,428 --> 00:36:55,360 Vent. 679 00:36:55,360 --> 00:36:55,960 Gjorde jeg - 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 >> Right. 684 00:37:09,180 --> 00:37:16,790 Så her er vi tilbage med intet andet, men kode. 685 00:37:16,790 --> 00:37:19,460 Så lad mig flytte dette vindue lidt over. 686 00:37:19,460 --> 00:37:22,020 687 00:37:22,020 --> 00:37:22,260 Right. 688 00:37:22,260 --> 00:37:28,160 Som du kan se her, er de eneste filer vi er givet, er AppDelegate.h og prik 689 00:37:28,160 --> 00:37:30,500 m, og vi har ikke storyboard længere. 690 00:37:30,500 --> 00:37:39,580 >> Så hvis vi kører det, er vi stadig kommer til at komme til den hvide skærm, gudskelov. 691 00:37:39,580 --> 00:37:42,280 OK - hvid skærm, men intet andet. 692 00:37:42,280 --> 00:37:45,260 Og her er den vigtige del. 693 00:37:45,260 --> 00:37:47,810 Dette er, hvor handlingen sker. 694 00:37:47,810 --> 00:37:51,410 I de tidligere versioner, der er normalt ingen kode, men 695 00:37:51,410 --> 00:37:55,600 storyboard væsentlige giver koden for denne del. 696 00:37:55,600 --> 00:37:57,470 Jeg vil ikke gå i detaljer om, hvordan. 697 00:37:57,470 --> 00:38:02,890 >> Og hvad vi ønsker at gøre nu, er, at vi ønsker at gå ind her, og denne lille rum 698 00:38:02,890 --> 00:38:05,050 begynder at skabe vores 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 >> PUBLIKUM: Zoom? 702 00:38:07,450 --> 00:38:07,770 >> RHED SHI: Zoom. 703 00:38:07,770 --> 00:38:09,020 Ja, selvfølgelig. 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 Jeg vil være at skrive, så det ikke skulle noget for meget. 707 00:38:17,380 --> 00:38:17,940 OK. 708 00:38:17,940 --> 00:38:22,720 >> Så først, husk vi ønskede at skabe en navigations-controlleren, right? 709 00:38:22,720 --> 00:38:27,090 Og også, som du kan se her, Xcode gør et rigtig stort stykke arbejde 710 00:38:27,090 --> 00:38:28,070 selv-påfyldning. 711 00:38:28,070 --> 00:38:31,650 Så, som du lægger mærke til, navnene på alt er meget længere end 712 00:38:31,650 --> 00:38:33,910 sædvanlig, men Xcode fylder den i for dig. 713 00:38:33,910 --> 00:38:35,710 Så jeg kan bare trykke Enter. 714 00:38:35,710 --> 00:38:40,180 >> Så jeg ønsker at oprette en UI navigation controller pointer, og jeg kan kalde 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, hvad gør jeg nu? 718 00:38:44,470 --> 00:38:49,510 Efter dette lighedstegn, jeg har brug for det første, skabe det inde i hukommelsen. 719 00:38:49,510 --> 00:38:53,790 Så jeg har tænkt mig at gøre NavigationController Alloc - 720 00:38:53,790 --> 00:38:56,640 så, det er magen til malloc, at du fyre, der anvendes i C - 721 00:38:56,640 --> 00:38:58,400 og så, jeg har tænkt mig at init det. 722 00:38:58,400 --> 00:39:03,670 >> Så det er virkelig vigtigt, at enhver objekt, du opretter, vil du 723 00:39:03,670 --> 00:39:04,940 Alloc og init det. 724 00:39:04,940 --> 00:39:08,600 Det kommer til at skabe den, og instantialize det inde i hukommelsen, og 725 00:39:08,600 --> 00:39:10,480 nu kan du bruge den. 726 00:39:10,480 --> 00:39:10,780 Okay? 727 00:39:10,780 --> 00:39:14,360 Hvis du ikke gør det, dit objekt gør ikke findes, og du vil løbe ind i en flok 728 00:39:14,360 --> 00:39:17,290 problemer. 729 00:39:17,290 --> 00:39:20,250 >> Og så, jeg ønsker at skabe en visning controller, right? 730 00:39:20,250 --> 00:39:25,580 Så jeg ønsker at oprette en UIViewController stjerne - 731 00:39:25,580 --> 00:39:29,620 så alt er en pointer i Objective-C, og jeg har tænkt mig at gøre 732 00:39:29,620 --> 00:39:31,600 noget lignende, her - 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 >> Og hvad så jeg har tænkt mig at gøre, er, jeg er gå til - så huske, da vi gjorde 737 00:39:43,450 --> 00:39:45,360 indlejre i navigation controller? 738 00:39:45,360 --> 00:39:46,920 Dette er, hvordan du gør det i kode. 739 00:39:46,920 --> 00:39:54,550 Du kommer til at gøre navigationController 740 00:39:54,550 --> 00:39:55,780 pushViewController - 741 00:39:55,780 --> 00:39:57,636 >> PUBLIKUM: [uhørligt]. 742 00:39:57,636 --> 00:39:59,030 Vil dette ske for os - eller? 743 00:39:59,030 --> 00:40:00,080 >> RHED SHI: Åh, ja. 744 00:40:00,080 --> 00:40:00,550 Nej. 745 00:40:00,550 --> 00:40:02,740 Det kan lide mig bedre. 746 00:40:02,740 --> 00:40:04,670 Nej, det vil arbejde for dig, også. 747 00:40:04,670 --> 00:40:06,700 Så disse er alle metoder. 748 00:40:06,700 --> 00:40:10,400 Så pushViewController er en metode, og også mere specifikt, det er en 749 00:40:10,400 --> 00:40:13,590 eksempel metode UI navigations-controlleren. 750 00:40:13,590 --> 00:40:20,030 Fordi jeg var nødt til at skabe min UI navigation controller stjerne, og så er jeg 751 00:40:20,030 --> 00:40:24,510 kan kalde dette pushViewController på min specifik instans af en UI navigation 752 00:40:24,510 --> 00:40:25,010 controller. 753 00:40:25,010 --> 00:40:29,490 >> PUBLIKUM: Har vi nødt til at gøre det nøjagtige ord, eller er det allerede findes for det? 754 00:40:29,490 --> 00:40:31,380 >> RHED SHI: Ja, fordi det er en metode. 755 00:40:31,380 --> 00:40:32,200 Det er ligesom en funktion. 756 00:40:32,200 --> 00:40:33,330 Det er ligesom printf. 757 00:40:33,330 --> 00:40:34,390 Det er ligesom scanf. 758 00:40:34,390 --> 00:40:36,250 Det er ligesom strcompare. 759 00:40:36,250 --> 00:40:40,310 Bortset fra det ved, hvad du måske ønsker at skriver, og bemærk, at det vil altid 760 00:40:40,310 --> 00:40:42,740 komme op med ting, der er juridisk tilladt for dig. 761 00:40:42,740 --> 00:40:47,620 Så hvis intet dukker op her, er der noget galt. 762 00:40:47,620 --> 00:40:50,550 >> Så pushViewController. 763 00:40:50,550 --> 00:40:52,580 Så nu vil jeg til at skubbe min nyoprettede 764 00:40:52,580 --> 00:40:56,850 UIViewController og derefter, animeret - 765 00:40:56,850 --> 00:40:57,470 måske ikke. 766 00:40:57,470 --> 00:41:00,110 Da dette vil være den første visning controller. 767 00:41:00,110 --> 00:41:03,210 Jeg mener, selvom jeg gjorde animeret, det vil sandsynligvis ikke dukke op, fordi 768 00:41:03,210 --> 00:41:05,050 det er det første skærmbillede. 769 00:41:05,050 --> 00:41:06,540 >> Og husk de kantede parenteser. 770 00:41:06,540 --> 00:41:08,850 Så husk, hvordan vi brugte konsollerne? 771 00:41:08,850 --> 00:41:11,870 Og inde i parentes objekt kalder på en metode - 772 00:41:11,870 --> 00:41:15,910 så vores objekt er navigationen controller, og metoden er en push 773 00:41:15,910 --> 00:41:17,210 view controller animeret. 774 00:41:17,210 --> 00:41:21,920 Og se, hvordan det tager to argumenter, og de er adskilt af den, en slags, 775 00:41:21,920 --> 00:41:24,390 ord og et kolon. 776 00:41:24,390 --> 00:41:28,300 Så Objective-C forsøger at gøre det rart og nemt for dig at læse højt - 777 00:41:28,300 --> 00:41:33,020 din kode - og få den semi, slags, giver mening. 778 00:41:33,020 --> 00:41:37,150 >> Men at gøre netop dette er ikke nok. 779 00:41:37,150 --> 00:41:39,780 Lad mig zoome ud nu. 780 00:41:39,780 --> 00:41:44,210 Gøre netop dette er ikke nok til få, hvad vi fik til tidligere. 781 00:41:44,210 --> 00:41:48,580 Så her, vil du bemærke, at der er faktisk ikke kommer til at være nogen form for 782 00:41:48,580 --> 00:41:50,190 bar, her, ikke? 783 00:41:50,190 --> 00:41:54,680 Der er ingen navigation bar, hvilket betyder, at vi stadig ikke har fået det. 784 00:41:54,680 --> 00:41:58,850 >> Og vi kan teste det ud, også ved, måske ændre baggrunden af 785 00:41:58,850 --> 00:42:00,460 Viewcontroller, right? 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 hvordan viewcontroller ikke havde en baggrundsfarve, selvom jeg 790 00:42:07,690 --> 00:42:08,780 ønskede at få adgang til det? 791 00:42:08,780 --> 00:42:14,080 Og det er fordi viewcontroller er en beholder for visningen. 792 00:42:14,080 --> 00:42:19,490 Så det har en visning ejendom, som så har en baggrundsfarve. 793 00:42:19,490 --> 00:42:25,510 >> Og jeg kan indstille det, en slags kedelig, ved at kalde farve 794 00:42:25,510 --> 00:42:28,130 på UIColor objektet. 795 00:42:28,130 --> 00:42:33,210 Så varsel her, redColor er en metode. 796 00:42:33,210 --> 00:42:36,750 Det er en klasse metode UIcolor. 797 00:42:36,750 --> 00:42:40,820 Fordi jeg ikke nødt til at oprette en faktiske forekomst af en UIColor for 798 00:42:40,820 --> 00:42:42,020 at kalde metoden på det. 799 00:42:42,020 --> 00:42:45,050 Jeg bare simpelthen, kaldte det af typen-lignende navn. 800 00:42:45,050 --> 00:42:49,620 Jeg, ligesom, kaldte det på int, hvis int havde, lignende, en fremgangsmåde til den, f.eks. 801 00:42:49,620 --> 00:42:52,380 >> Og så, hvis vi køre denne kode, vi får bemærke, at baggrunden er 802 00:42:52,380 --> 00:42:53,540 faktisk ikke rød. 803 00:42:53,540 --> 00:42:54,790 Det er stadig hvid. 804 00:42:54,790 --> 00:42:57,720 805 00:42:57,720 --> 00:43:04,550 Og hvordan vi kan komme rundt, der er, mærke til, hvordan der er self.window. 806 00:43:04,550 --> 00:43:08,260 Det er ligesom, det ultimative beholder for din ansøgning. 807 00:43:08,260 --> 00:43:11,630 Det er det ultimative ting, der indeholder alt på skærmen, for en 808 00:43:11,630 --> 00:43:13,650 iPhone eller iPad applikation. 809 00:43:13,650 --> 00:43:20,970 >> Og bekvemt self.window har denne egenskab kaldet 810 00:43:20,970 --> 00:43:22,650 rootViewController. 811 00:43:22,650 --> 00:43:26,480 Og det bliver markøren til den allerførste visning controller inde 812 00:43:26,480 --> 00:43:27,270 af din app. 813 00:43:27,270 --> 00:43:32,000 Så, hvad vi ønsker at gøre her, nu er for at indstille det svarer til vores navigation 814 00:43:32,000 --> 00:43:32,710 controller. 815 00:43:32,710 --> 00:43:33,760 Right? 816 00:43:33,760 --> 00:43:37,490 Fordi, teknisk navigation controller er vores allerførste visning 817 00:43:37,490 --> 00:43:38,770 controller. 818 00:43:38,770 --> 00:43:46,160 Det holder styr på en række andre udsigt controllere, og vi pressede dette 819 00:43:46,160 --> 00:43:49,810 view controller i denne matrix i navigations-controlleren. 820 00:43:49,810 --> 00:43:52,640 >> Så behøver du ikke ønsker at gøre dette. 821 00:43:52,640 --> 00:43:54,225 Det ville ikke rigtig hjælpe dig. 822 00:43:54,225 --> 00:43:58,040 Du ønsker at gøre dette, hvis du ønskede at gøre en navigations-controller, som de fleste 823 00:43:58,040 --> 00:44:01,100 af jer sikkert vil, fordi du ønsker til, en slags, har en slags, 824 00:44:01,100 --> 00:44:04,840 ligesom, menu for at gå tilbage til eller nogle hjemmeside for at gå tilbage til, snarere end 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 >> PUBLIKUM: Er det ubehageligt for dig at zoome ind på det - 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 Det er den kode, og nu Lad os prøve det af. 832 00:44:22,370 --> 00:44:27,920 >> Så der går vi. 833 00:44:27,920 --> 00:44:29,170 Magic. 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 Tak. 837 00:44:34,420 --> 00:44:35,000 OK. 838 00:44:35,000 --> 00:44:38,690 Så nu, hvad vi ønsker at gøre, er - så, vi slags begrænset her, right? 839 00:44:38,690 --> 00:44:45,130 Vi potentielt kunne skrive alt indersiden af ​​denne funktion. 840 00:44:45,130 --> 00:44:48,470 Men, det er ikke sådan iOS udvikling normalt arbejder. 841 00:44:48,470 --> 00:44:53,030 >> Så, hvad vi vil gøre, er, at vi kommer til at skabe nogle nye filer. 842 00:44:53,030 --> 00:44:57,110 Men mere specifikt vil vi oprette en anden Objective-C klassen, eller 843 00:44:57,110 --> 00:44:58,010 andet formål - 844 00:44:58,010 --> 00:45:00,700 klasse og objekter er udskifteligt her. 845 00:45:00,700 --> 00:45:06,460 Og her er hvordan jeg kunne potentielt oprette en anden klasse af U-controllere. 846 00:45:06,460 --> 00:45:12,030 >> Så det er en underklasse, som du vil opdage, her, det er en underklasse af 847 00:45:12,030 --> 00:45:15,910 UI view controller, men jeg kan kalde det noget andet navn her. 848 00:45:15,910 --> 00:45:19,400 Jeg kunne kalde denne CS50, kunne jeg kalde dette synspunkt controller, jeg kunne kalde 849 00:45:19,400 --> 00:45:21,640 denne blah view controller - 850 00:45:21,640 --> 00:45:22,400 noget jeg vil. 851 00:45:22,400 --> 00:45:24,140 Dette er blot navnet på klassen. 852 00:45:24,140 --> 00:45:27,020 Men det vil være vigtigt fordi det væsentlige, hvad jeg gør 853 00:45:27,020 --> 00:45:29,720 her er, jeg skaber anden klasse navn. 854 00:45:29,720 --> 00:45:34,140 Så det kommer til at være, ligesom nogle slags type eller et objekt. 855 00:45:34,140 --> 00:45:35,910 Så skal det være en lille smule generiske. 856 00:45:35,910 --> 00:45:37,225 Det kommer ikke til at være meget specifik. 857 00:45:37,225 --> 00:45:40,410 858 00:45:40,410 --> 00:45:44,480 >> Og også, jeg ønsker at pege disse to muligheder. 859 00:45:44,480 --> 00:45:48,430 Fordi vi gør alt inde i kode, nogle gange er det meget lettere 860 00:45:48,430 --> 00:45:53,540 at bringe i en grænseflade fil, således at Jeg kan bogstaveligt talt trække og slippe, som 861 00:45:53,540 --> 00:45:54,960 vi gjorde tidligere med storyboard - 862 00:45:54,960 --> 00:45:57,810 du ved, en etiket eller på en knap, eller hvad. 863 00:45:57,810 --> 00:46:01,950 Og så xibs er filer, der giver dig mulighed for at gør det, og du er nødt til at tilslutte den 864 00:46:01,950 --> 00:46:04,310 denne opfattelse controller-fil. 865 00:46:04,310 --> 00:46:06,540 >> Så jeg har tænkt mig at bevidst ikke kontrollere dette. 866 00:46:06,540 --> 00:46:12,510 Normalt ville jeg kontrollere dette, og hvis jeg kun gjorde det for iPhone eller iPad, jeg 867 00:46:12,510 --> 00:46:16,340 ville kontrollere dette og blot have en for, du ved, iPhone eller iPad. 868 00:46:16,340 --> 00:46:19,750 Men da jeg gør universel, vil jeg at oprette to af dem senere. 869 00:46:19,750 --> 00:46:22,220 Så jeg har tænkt mig at bevidst Fjern markeringen af ​​denne. 870 00:46:22,220 --> 00:46:23,940 >> Det er også meget vigtigt. 871 00:46:23,940 --> 00:46:27,490 En masse gange, jeg har haft bugs hvor dette ikke blev kontrolleret. 872 00:46:27,490 --> 00:46:31,930 Og så, naturligvis, denne fil er ikke, slags, ligesom, inkluderet eller importeret 873 00:46:31,930 --> 00:46:33,740 indersiden af ​​denne test mappe. 874 00:46:33,740 --> 00:46:38,180 Og ja, min kode har absolut ingen idé om eksistensen af ​​denne fil, og 875 00:46:38,180 --> 00:46:41,080 der forårsager en masse smerte og timer af debugging. 876 00:46:41,080 --> 00:46:44,360 Men, bare sørg for dette er markeret, så , du ved, målet for denne 877 00:46:44,360 --> 00:46:47,510 fil er til denne anvendelse. 878 00:46:47,510 --> 00:46:48,310 >> OK. 879 00:46:48,310 --> 00:46:51,680 Så nu har vi oprettet to nye filer. 880 00:46:51,680 --> 00:46:54,050 Og disse filer ser temmelig tom. 881 00:46:54,050 --> 00:46:59,550 Og faktisk, lad os også fortsætte på ved at skabe XIb filer. 882 00:46:59,550 --> 00:47:03,690 Så tidligere, var jeg i Cocoa Touch drop-down. 883 00:47:03,690 --> 00:47:06,880 Nu, jeg har tænkt mig at gå ind i Bruger Interface touch, og som du kan se, jeg 884 00:47:06,880 --> 00:47:08,120 kan skabe et storyboard. 885 00:47:08,120 --> 00:47:11,710 >> Så selv jeg startede med en tom program, kan jeg stadig bruge en 886 00:47:11,710 --> 00:47:12,340 storyboard. 887 00:47:12,340 --> 00:47:15,480 Selvom, det bliver tricky i form hvordan du ønsker at tilslutte 888 00:47:15,480 --> 00:47:16,820 det til din kode. 889 00:47:16,820 --> 00:47:18,230 Så vil jeg ikke gå der. 890 00:47:18,230 --> 00:47:22,160 >> Men, hvad vi ønsker at gøre nu er at oprette en visning. 891 00:47:22,160 --> 00:47:25,720 Og du kan vælge til en iPhone eller en iPad. 892 00:47:25,720 --> 00:47:30,180 Og typisk, at betegne forskel - hvis du laver en 893 00:47:30,180 --> 00:47:31,950 universel anvendelse - 894 00:47:31,950 --> 00:47:35,980 du enten sætte en understregning iPhone, eller du kan gøre en Twiddly. 895 00:47:35,980 --> 00:47:36,980 Det betyder ikke rigtig noget. 896 00:47:36,980 --> 00:47:40,890 Det er simpelthen for dig at differentiere hvilket synspunkt er, hvilken enhed. 897 00:47:40,890 --> 00:47:43,470 898 00:47:43,470 --> 00:47:44,430 >> Og så ser nu. 899 00:47:44,430 --> 00:47:47,550 Jeg har en skærm, som jeg kan arbejde med. 900 00:47:47,550 --> 00:47:53,530 Og så, for eksempel, jeg kan sætte en etiket her, du kender, og jeg kan også sætte 901 00:47:53,530 --> 00:47:54,820 anden knap her. 902 00:47:54,820 --> 00:47:58,730 Jeg gider ikke at ændre værdierne her. 903 00:47:58,730 --> 00:48:09,050 >> Men hvad der er vigtigt her, er at filens ejer - 904 00:48:09,050 --> 00:48:13,660 så er jeg inde i iPhone visning, iPhone XIb fil. 905 00:48:13,660 --> 00:48:18,050 Og ned i denne sejlads område eller drop-down menu, jeg ønsker at gå til 906 00:48:18,050 --> 00:48:19,090 filens ejer. 907 00:48:19,090 --> 00:48:22,630 Og det er virkelig vigtigt skridt her. 908 00:48:22,630 --> 00:48:27,780 Jeg ønsker at gøre klassen udsigt controller, så denne XIb fil 909 00:48:27,780 --> 00:48:30,030 vil være forbundet med min opfattelse controller. 910 00:48:30,030 --> 00:48:33,590 911 00:48:33,590 --> 00:48:39,360 Og noget, jeg gør inde i min mening controller programmatisk er 912 00:48:39,360 --> 00:48:42,800 kommer til at blive reflekteret på her. 913 00:48:42,800 --> 00:48:46,270 >> Så dog bemærke, at - 914 00:48:46,270 --> 00:48:55,995 faktisk, lad os gøre dette synspunkt baggrund blå, for eksempel. 915 00:48:55,995 --> 00:49:00,280 916 00:49:00,280 --> 00:49:01,530 Eller grøn. 917 00:49:01,530 --> 00:49:03,870 918 00:49:03,870 --> 00:49:07,950 Og så, så hvis du lægger mærke til, tilbage i denne kode, det er her vi fik vores 919 00:49:07,950 --> 00:49:09,200 navigations-controlleren. 920 00:49:09,200 --> 00:49:12,650 921 00:49:12,650 --> 00:49:18,310 >> Selvom vi gjorde det skridt, det er stadig vil være rød, ikke grøn. 922 00:49:18,310 --> 00:49:20,350 Og der er en grund til hvorfor. 923 00:49:20,350 --> 00:49:28,090 Det er fordi, når vi inited vores opfattelse controller, her - 924 00:49:28,090 --> 00:49:30,010 Beklager, det er lidt skørt - 925 00:49:30,010 --> 00:49:34,520 når vi inited vores opfattelse controller her, vi inited det af den generelle type 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 ikke engang gøre det med denne klasse. 929 00:49:40,560 --> 00:49:42,030 >> Så husk, det er ligesom en klasse nu. 930 00:49:42,030 --> 00:49:47,160 Det kan opfattes som en type, bare som UIViewController er en type. 931 00:49:47,160 --> 00:49:51,080 Og for at bruge det, hvad vi skal gøre, er at importere det - 932 00:49:51,080 --> 00:49:52,520 import viewcontroller - 933 00:49:52,520 --> 00:49:55,750 og som du kan se, det fylder automatisk det for mig. 934 00:49:55,750 --> 00:49:56,570 Så viewcontroller - 935 00:49:56,570 --> 00:50:02,070 og nu her, jeg kan ændre dette UIViewController til viewcontroller. 936 00:50:02,070 --> 00:50:05,050 Og nu, her, jeg kan ændre dette viewcontroller. 937 00:50:05,050 --> 00:50:07,790 938 00:50:07,790 --> 00:50:09,250 >> Lad os køre det igen. 939 00:50:09,250 --> 00:50:16,970 940 00:50:16,970 --> 00:50:19,690 Det er stadig rød. 941 00:50:19,690 --> 00:50:23,370 Og grunden til, at det er stadig rød er fordi - 942 00:50:23,370 --> 00:50:26,230 Woah, hvad skete der? 943 00:50:26,230 --> 00:50:31,500 Vi ønskede at knytte dette XIb fil med henblik på controlleren. 944 00:50:31,500 --> 00:50:37,540 Men for at rent faktisk gøre , at vi er nødt til at gå ind i dette. 945 00:50:37,540 --> 00:50:42,980 Og når vi gør det init, vi ønsker at gøre initWithNibName, og så ønsker vi at 946 00:50:42,980 --> 00:50:48,910 gøre det på strengen View_iPhone, for eksempel. 947 00:50:48,910 --> 00:50:51,700 Du kan ignorere pakken her. 948 00:50:51,700 --> 00:50:54,965 >> Og det kommer til at tillade os til, faktisk - 949 00:50:54,965 --> 00:51:00,620 950 00:51:00,620 --> 00:51:02,160 uh oh, der er et problem. 951 00:51:02,160 --> 00:51:09,300 952 00:51:09,300 --> 00:51:09,980 Right. 953 00:51:09,980 --> 00:51:17,670 >> Og så er der et problem, fordi i vores opfattelse XIb fil, vi har en etiket og 954 00:51:17,670 --> 00:51:18,720 vi har en knap. 955 00:51:18,720 --> 00:51:23,660 Men selvom vi har tilsluttet de to, der er ikke noget inde i 956 00:51:23,660 --> 00:51:27,440 ViewController.h eller ViewController.m der afspejler dem 957 00:51:27,440 --> 00:51:29,160 knapper eller disse etiketter. 958 00:51:29,160 --> 00:51:32,425 Så vi er nødt til at skrive dem ind som egenskaber visning controller. 959 00:51:32,425 --> 00:51:35,290 960 00:51:35,290 --> 00:51:39,490 >> Så det er sådan du erklærer en ejendom. 961 00:51:39,490 --> 00:51:43,422 Det tager, typisk i disse to muligheder. 962 00:51:43,422 --> 00:51:48,690 Ved anvendelsen af ​​os, og dette seminar, Jeg vil sige, at der generelt, 963 00:51:48,690 --> 00:51:52,250 de fleste ejendomme er nonatomic og fastholde. 964 00:51:52,250 --> 00:51:55,420 Du kan læse op af Google søgning, du ved, at forskellen mellem 965 00:51:55,420 --> 00:51:58,620 nonatomic og opbevare om, du ved, Google eller noget. 966 00:51:58,620 --> 00:52:01,090 Og jeg vil tage dig til, ligesom, Stack Overløb, hvor folk vil have 967 00:52:01,090 --> 00:52:03,605 svar til de forskelle, mellem dem. 968 00:52:03,605 --> 00:52:07,000 Men for nu, det er hvad vi ønsker at beskæftige sig med. 969 00:52:07,000 --> 00:52:12,790 >> Og vi ønsker at gøre en UI etiket, stjerne, og vi kan kalde det hvad vi ønsker. 970 00:52:12,790 --> 00:52:15,710 Vi kan kalde dette, du ved, etiket. 971 00:52:15,710 --> 00:52:18,270 972 00:52:18,270 --> 00:52:20,110 Og, vil vi skabe en anden én til knappen. 973 00:52:20,110 --> 00:52:24,380 974 00:52:24,380 --> 00:52:29,910 Og husk at inkludere stjerne fordi vi har at gøre med pegepinde 975 00:52:29,910 --> 00:52:36,740 temmelig overalt inde af mål-C. 976 00:52:36,740 --> 00:52:42,110 >> Men der vil stadig ikke løse problemet, som du kan se her. 977 00:52:42,110 --> 00:52:50,540 Og årsagen er, fordi, når vi ønsker at tilslutte en XIb fil etiket eller en 978 00:52:50,540 --> 00:52:55,690 knap til programmet, eller header og implementering fil, vi ønsker at 979 00:52:55,690 --> 00:52:58,255 tilføje dette stykke kode - 980 00:52:58,255 --> 00:53:00,610 stikkontakt. 981 00:53:00,610 --> 00:53:03,600 Bemærk, at det er et nøgleord. 982 00:53:03,600 --> 00:53:07,970 >> Og så snart jeg er færdig med at skrive det ud, bør det have disse 983 00:53:07,970 --> 00:53:09,100 to cirkler, her. 984 00:53:09,100 --> 00:53:11,200 Normalt er de ikke udfyldt 985 00:53:11,200 --> 00:53:12,920 Jeg er ikke sikker på, hvorfor de er. 986 00:53:12,920 --> 00:53:21,370 Men som regel, bliver du nødt til manuelt at forbinde dem ved at gå til denne side af 987 00:53:21,370 --> 00:53:23,530 forsyningssektoren området. 988 00:53:23,530 --> 00:53:28,430 >> Og så, lige nu, jeg har fået min etiket valgt, og jeg ønsker at trække denne nye 989 00:53:28,430 --> 00:53:33,910 henvisninger stikkontakt til min fil ejer, og klik derefter på Label. 990 00:53:33,910 --> 00:53:40,230 Så nu endelig denne etiket er tilsluttet til denne etiket. 991 00:53:40,230 --> 00:53:44,950 Og dette mærke er, hvad vi vil bruge programmering til at ændre sin 992 00:53:44,950 --> 00:53:49,250 tekst, dens skrifttype, dens baggrund farve, et cetera. 993 00:53:49,250 --> 00:53:52,430 >> Så hvorfor gør vi ikke det samme til knappen? 994 00:53:52,430 --> 00:53:54,770 Og som du vil opdage, til knappen, det er lidt mere kompliceret. 995 00:53:54,770 --> 00:53:59,060 Fordi, jeg mener, du skulle tryk på en knap, så det fik en masse 996 00:53:59,060 --> 00:54:02,950 af muligheder for, hvordan brugerne kan trykke på en knap. 997 00:54:02,950 --> 00:54:06,570 Og så vil vi se senere, at vi kan forbinde dette til vores 998 00:54:06,570 --> 00:54:09,140 kode til at gøre det arbejde. 999 00:54:09,140 --> 00:54:12,770 >> Så for nu, selvom vi ønsker at forbinde den til den aktuelle knap 1000 00:54:12,770 --> 00:54:13,570 inde i vores kode. 1001 00:54:13,570 --> 00:54:19,640 Så vi gå til den nye henvisninger stikkontakten, og gøre derefter på knappen. 1002 00:54:19,640 --> 00:54:22,068 Nu, lad os køre det 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 Jeg ved ikke, hvad der foregår her 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 Bare et øjeblik, her. 1010 00:54:58,960 --> 00:55:02,490 >> Faktisk, hvorfor vi ikke tage en se på et andet eksempel på 1011 00:55:02,490 --> 00:55:05,800 interesse tid. 1012 00:55:05,800 --> 00:55:06,200 OK. 1013 00:55:06,200 --> 00:55:10,610 Så her er det lettere forberedt eksempel for viewcontroller. 1014 00:55:10,610 --> 00:55:13,230 1015 00:55:13,230 --> 00:55:17,110 Som du kan se her, har jeg medtaget egenskaberne for 1016 00:55:17,110 --> 00:55:18,460 etiket og knappen. 1017 00:55:18,460 --> 00:55:20,370 Og så dette stykke kode her - 1018 00:55:20,370 --> 00:55:21,830 denne IBaction - 1019 00:55:21,830 --> 00:55:27,740 var en forbindelse til denne knap her. 1020 00:55:27,740 --> 00:55:33,940 Så som du kan se her, Touch Up Inside er forbundet med vælgeren 1021 00:55:33,940 --> 00:55:37,390 kaldet nede. 1022 00:55:37,390 --> 00:55:41,700 >> Så kan vi faktisk gå gennem bevægelse igen, her, ved at tage Touch Up 1023 00:55:41,700 --> 00:55:48,750 Inde og trække det til Filens ejer, og derefter 1024 00:55:48,750 --> 00:55:51,570 klik på nede. 1025 00:55:51,570 --> 00:55:52,820 Nu, lad os køre vores kode. 1026 00:55:52,820 --> 00:55:55,710 1027 00:55:55,710 --> 00:56:02,020 Så nu, denne knap nu virker og vil tage os til den næste side. 1028 00:56:02,020 --> 00:56:08,430 >> Og med hensyn til vores opfattelse controller, dette er det stykke kode, der tog 1029 00:56:08,430 --> 00:56:10,000 pleje af knappen nede. 1030 00:56:10,000 --> 00:56:14,260 Og det er vigtigt at bemærke her, at Jeg har oprettet en anden type visning 1031 00:56:14,260 --> 00:56:16,330 controller kaldes en tabel view controller. 1032 00:56:16,330 --> 00:56:19,900 Så det var den samme til tilbage i storyboard, da jeg slæbte en af 1033 00:56:19,900 --> 00:56:23,450 disse tabel view controllere i storyboard. 1034 00:56:23,450 --> 00:56:24,470 Jeg skaber en anden 1035 00:56:24,470 --> 00:56:30,000 >> Pointer til tabellen visning controller, alloc og init-ning det, og så gøre 1036 00:56:30,000 --> 00:56:34,490 self dot navigations-controlleren, skubbe viewcontroller denne nye 1037 00:56:34,490 --> 00:56:35,350 viewcontroller. 1038 00:56:35,350 --> 00:56:39,750 Og jeg har sat animationen til ja, fordi nu inde i min app, og jeg 1039 00:56:39,750 --> 00:56:45,670 ønsker rent faktisk at se animationen går fra startsiden til 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 >> PUBLIKUM: Har du stadig bekymre om garbage collection? 1043 00:56:51,110 --> 00:56:51,840 >> RHED SHI: Hvad er det? 1044 00:56:51,840 --> 00:56:54,740 Nej. 1045 00:56:54,740 --> 00:56:58,970 Så spørgsmålet var, har du at arbejde med garbage collection? 1046 00:56:58,970 --> 00:57:03,470 Så Xcode 4 havde ligesom ARC, hvilket er automatisk henvisning optælling. 1047 00:57:03,470 --> 00:57:06,120 Og så, som regel, når du starter en ny projekt, ville du kontrollere, at fordi 1048 00:57:06,120 --> 00:57:09,440 ingen virkelig ønsker at beskæftige sig med frigøre hukommelse og kram. 1049 00:57:09,440 --> 00:57:13,720 Men jeg tror i Xcode 5, er der ikke engang denne mulighed på det nye projekt. 1050 00:57:13,720 --> 00:57:16,750 Så det automatisk gør det for dig. 1051 00:57:16,750 --> 00:57:16,920 Ja? 1052 00:57:16,920 --> 00:57:20,970 >> PUBLIKUM: Kan du eksportere en PDF i din storyboard? 1053 00:57:20,970 --> 00:57:22,020 >> RHED SHI: Ja, absolut. 1054 00:57:22,020 --> 00:57:28,180 Så vil alle disse indgå i kildekode, så du fyre kan tjekke 1055 00:57:28,180 --> 00:57:30,730 den faktiske Xcode projekt for det. 1056 00:57:30,730 --> 00:57:31,105 Ja? 1057 00:57:31,105 --> 00:57:35,944 >> PUBLIKUM: Men, jeg mener, ligesom, jeg kan udskrive en PDF-fil med mit storyboard? 1058 00:57:35,944 --> 00:57:38,920 Hvis jeg bare vil eksportere billeder at vise nogen. 1059 00:57:38,920 --> 00:57:39,160 >> RHED SHI: Oh yeah. 1060 00:57:39,160 --> 00:57:41,980 Jeg tror, ​​måske, kan du bare tage et skærmbillede. 1061 00:57:41,980 --> 00:57:44,350 Ja, og sende dem en skærm skud eller noget. 1062 00:57:44,350 --> 00:57:45,600 Ja. 1063 00:57:45,600 --> 00:57:49,170 1064 00:57:49,170 --> 00:57:50,570 >> Så lad os se. 1065 00:57:50,570 --> 00:57:56,470 Af hensyn til tiden, tror jeg det er alt jeg kan dække i dag. 1066 00:57:56,470 --> 00:57:59,600 Men jeg ved, det er, faktisk, bare næppe berøre overfladen af ​​iOS 1067 00:57:59,600 --> 00:58:00,370 udvikling. 1068 00:58:00,370 --> 00:58:05,630 Så er du velkommen til at kontakte mig, hvis du har spørgsmål om iOS 1069 00:58:05,630 --> 00:58:07,000 udvikling. 1070 00:58:07,000 --> 00:58:12,840 Og forhåbentlig vil jeg være i stand til at rense op på nogle af koden for kilden 1071 00:58:12,840 --> 00:58:16,830 kode filer, så du har nogle virkelig rart eksempler at arbejde med. 1072 00:58:16,830 --> 00:58:21,020 >> Anden end at, hvis du fyre går til CS50 hackathon, jeg måske eller måske 1073 00:58:21,020 --> 00:58:25,730 ikke være der, og jeg kan hjælpe med nogle iOS udvikling, også. 1074 00:58:25,730 --> 00:58:26,980 Så takket være en masse, gutter. 1075 00:58:26,980 --> 00:58:31,168