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 Introduksjon til iOS. 4 00:00:11,630 --> 00:00:13,290 Takk til dere alle for å komme. 5 00:00:13,290 --> 00:00:16,610 Jeg håper du er like begeistret som jeg er om iOS. 6 00:00:16,610 --> 00:00:22,300 I fjor tok jeg CS50 som en sophomore, og jeg i utgangspunktet lært iOS for min 7 00:00:22,300 --> 00:00:23,490 avsluttende prosjekt. 8 00:00:23,490 --> 00:00:26,350 Og det var ganske - 9 00:00:26,350 --> 00:00:30,530 vel, det var ikke lett, men det er massevis av støtte tutorials på nettet. 10 00:00:30,530 --> 00:00:33,760 Og jeg håper virkelig at med denne seminar, vil jeg gi dere et hode 11 00:00:33,760 --> 00:00:36,750 starte på iOS utvikling 12 00:00:36,750 --> 00:00:40,490 >> Så, i form av iOS utvikling, Det er hovedsakelig to ting vi 13 00:00:40,490 --> 00:00:42,090 ønsker å dekke i dag. 14 00:00:42,090 --> 00:00:43,290 Først språket - 15 00:00:43,290 --> 00:00:46,650 språket kommer til å være i Objective-C. Vi vil faktisk høre 16 00:00:46,650 --> 00:00:47,750 noe virkelig spennende. 17 00:00:47,750 --> 00:00:51,500 Så kan du bli med hele Apple fellesskapet av utviklere og bygge litt 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 vakker, forhåpentligvis, til noen av dere. 20 00:00:58,670 --> 00:01:01,130 Men det er kontroversielt, jeg vet. 21 00:01:01,130 --> 00:01:05,349 Og først og fremst, hva jeg ønsker å gjøre er å guide deg gjennom Objective-C, og også 22 00:01:05,349 --> 00:01:10,650 Xcode, som er integrert utviklingsmiljø som du vil være 23 00:01:10,650 --> 00:01:13,460 arbeider i for iOS. 24 00:01:13,460 --> 00:01:19,140 >> Og så, bare et ord på Objective-C. I utgangspunktet er det nøyaktig 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å, mer strengt, det er faktisk en super-sett med C. Så alt som du 27 00:01:27,710 --> 00:01:32,280 kan gjøre i C akkurat nå, noe som er utgangspunktet liker PSett 0 til 6, du 28 00:01:32,280 --> 00:01:34,170 kan gjøre i Objective-C. 29 00:01:34,170 --> 00:01:38,620 >> Så, ikke føler seg redd om denne nye språk som du kommer til å lære. 30 00:01:38,620 --> 00:01:42,120 Du har allerede dekket mye av det, fordi du har alle gjort C denne fortid 31 00:01:42,120 --> 00:01:45,880 semester, bortsett fra nå du kommer å ha mye mer å jobbe med. 32 00:01:45,880 --> 00:01:49,270 Og jeg bare kommer til å lede deg gjennom en par eksempler for å fremheve noen 33 00:01:49,270 --> 00:01:53,920 av de viktigste forskjellene som jeg fant var veldig viktig når jeg har lært 34 00:01:53,920 --> 00:01:57,180 Objective-C i fjor. 35 00:01:57,180 --> 00:02:00,910 >> Vel faktisk, så, det andre punktet er, Objective-C er, selvsagt, 36 00:02:00,910 --> 00:02:02,200 objektorientert. 37 00:02:02,200 --> 00:02:06,340 Og vi vil diskutere litt om hva det betyr senere. 38 00:02:06,340 --> 00:02:11,340 I utgangspunktet er det som hvordan du jobbet med structs i denne siste PSett, med 39 00:02:11,340 --> 00:02:13,360 noder og lignende andre ting som det. 40 00:02:13,360 --> 00:02:17,110 Bortsett fra, i Objective-C, er alt et objekt, og du kommer til å være 41 00:02:17,110 --> 00:02:20,720 passerer rundt pekere til objekter i stedet for de verdier selv. 42 00:02:20,720 --> 00:02:25,050 Så, det er bare noe viktig å huske på. 43 00:02:25,050 --> 00:02:29,140 >> Så, hvorfor ikke vi starte med noen forskjeller i syntaks mellom C og 44 00:02:29,140 --> 00:02:30,540 Objective-C? 45 00:02:30,540 --> 00:02:38,310 Jeg ønsker å markere # include, du vet, standard io.h i C og C + +, med 46 00:02:38,310 --> 00:02:44,030 Objective-C versjon av det, som er # import, og deretter en slags 47 00:02:44,030 --> 00:02:44,790 header-fil. 48 00:02:44,790 --> 00:02:48,165 I dette tilfellet ville det være UIKit, du vet, slash UIKit.h. 49 00:02:48,165 --> 00:02:53,560 Det kan også være, du vet, MKMapview til deg slash MKMapview.h hvis du ønsker 50 00:02:53,560 --> 00:02:56,370 å gjøre, som, et kart inne i programmet ditt. 51 00:02:56,370 --> 00:02:57,110 Lignende ting som det. 52 00:02:57,110 --> 00:03:01,250 >> Så, er det viktigste omfatte er nå endret til å importere. 53 00:03:01,250 --> 00:03:04,340 Men ideen er fortsatt. 54 00:03:04,340 --> 00:03:10,460 Du kommer til å være å importere noen form av header-fil inn i programmet. 55 00:03:10,460 --> 00:03:14,550 >> Jeg ønsker også å fremheve forskjellen mellom printf og NSLog. 56 00:03:14,550 --> 00:03:19,760 Men som vi sa tidligere, Objective-C er en streng super-sett 57 00:03:19,760 --> 00:03:22,800 C, noe som betyr at printf finnes i Objective-C, også. 58 00:03:22,800 --> 00:03:24,340 Men, de fleste ikke bruker det. 59 00:03:24,340 --> 00:03:28,245 De fleste bruker denne NSLog fordi det gir deg en tidsangivelse, og vi får se 60 00:03:28,245 --> 00:03:29,780 den i aksjon senere. 61 00:03:29,780 --> 00:03:33,560 Men det er generelt en mer nyttig måte å skrive ut variabler. 62 00:03:33,560 --> 00:03:38,220 >> Og jeg ønsker også å fremheve at NSLog tar i akkurat den samme 63 00:03:38,220 --> 00:03:41,650 plassholder verdier som printf gjør - 64 00:03:41,650 --> 00:03:45,900 så% d er for en int, % F er for en flottør. 65 00:03:45,900 --> 00:03:49,750 Men jeg ønsker å fremheve denne aller siste - 66 00:03:49,750 --> 00:03:52,960 NSLog% krøllalfa - 67 00:03:52,960 --> 00:03:55,390 som er en plassholder for et objekt. 68 00:03:55,390 --> 00:04:01,160 Og som jeg sa tidligere, Objective-C avtaler ganske mye for det meste i objekter, 69 00:04:01,160 --> 00:04:05,020 og så dette vil komme i bruk når du ønsker å skrive ut, kanskje, kanskje en 70 00:04:05,020 --> 00:04:08,390 NSArray, eller NSDictionary, eller en NSString. 71 00:04:08,390 --> 00:04:13,750 >> Så, også, legge merke til at i vår NSLog uttalelse, har vi en krøllalfa foran 72 00:04:13,750 --> 00:04:15,380 av sitatet - 73 00:04:15,380 --> 00:04:20,769 som er å betegne som strenger, nå, i Objective-C er objekter. 74 00:04:20,769 --> 00:04:23,310 De er ikke lenger bare røye stjerner. 75 00:04:23,310 --> 00:04:25,530 De er gjenstander og er behandlet slik. 76 00:04:25,530 --> 00:04:28,690 >> Så, er det veldig viktig at når du bruker NSLog det tar i en NS 77 00:04:28,690 --> 00:04:32,580 streng, noe som betyr at du vil ha å inkludere 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 funksjonskall til denne NSLog, jeg 80 00:04:38,290 --> 00:04:42,400 har en på foran sitater, selv om% d og% f-er 81 00:04:42,400 --> 00:04:45,200 alle det samme fra C. 82 00:04:45,200 --> 00:04:47,930 >> Eventuelle spørsmål så langt? 83 00:04:47,930 --> 00:04:50,920 Jeg skal prøve å gå gjennom dette raskt slik at vi kan ha mer tid til å jobbe 84 00:04:50,920 --> 00:04:55,210 med Xcode og Objective-C, så at dere kan få mer 85 00:04:55,210 --> 00:04:57,630 kjent med den. 86 00:04:57,630 --> 00:05:01,900 >> Deretter ønsker jeg å fremheve noe konseptuelt viktig. 87 00:05:01,900 --> 00:05:05,130 Så, i C, de fleste ting er funksjoner. 88 00:05:05,130 --> 00:05:06,280 Vi gjør et funksjonskall. 89 00:05:06,280 --> 00:05:10,190 Vi erklærer funksjoner på denne måten, med avkastningen typen først, deretter den 90 00:05:10,190 --> 00:05:13,570 funksjonsnavn, parentes, og deretter uansett argumenter og hvilken type 91 00:05:13,570 --> 00:05:15,590 disse argumentene vi ønsker å passere 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 slik klasse og objekt er to vilkår som er stort sett det samme som hverandre 94 00:05:23,970 --> 00:05:28,270 så jeg kan bruke dem om hverandre hele seminaret. 95 00:05:28,270 --> 00:05:34,090 >> Men, vil du se at vi har metoder i Objective-C heller enn funksjoner. 96 00:05:34,090 --> 00:05:36,390 Og metoder tilhører gjenstander. 97 00:05:36,390 --> 00:05:38,950 Så like, kanskje ta for eksempel node - 98 00:05:38,950 --> 00:05:40,250 vår type [uhørbart] 99 00:05:40,250 --> 00:05:44,390 node fra PSett 6 eller 5 - 100 00:05:44,390 --> 00:05:49,590 vi har ordet, eiendom, eller neste node pekeren. 101 00:05:49,590 --> 00:05:53,880 Metoder er bare funksjoner inne av en slags struktur. 102 00:05:53,880 --> 00:05:57,510 >> Så, i dette tilfellet, ville konstruksjonen bli objektet, og deretter metoden er 103 00:05:57,510 --> 00:05:59,260 noe som hører til et objekt. 104 00:05:59,260 --> 00:06:02,650 Og dette er hvordan du ville erklære, slags, en fremgangsmåte. 105 00:06:02,650 --> 00:06:07,990 Du vil starte med, igjen, avkastningen type - så, jeg prøvde å farge 106 00:06:07,990 --> 00:06:12,990 kode er stikkordene her, slik at dere kan se, i hvert fall, formatering 107 00:06:12,990 --> 00:06:17,650 likheter mellom funksjon erklæringer og metode erklæringer. 108 00:06:17,650 --> 00:06:21,990 Så starter du med, du vet, en avkastning type - i dette tilfellet, er det en matrise, eller 109 00:06:21,990 --> 00:06:23,910 en NSArray spisser - 110 00:06:23,910 --> 00:06:26,710 og da har du denne metoden. 111 00:06:26,710 --> 00:06:30,900 Og så, hva som er interessant her er at i stedet for å ha parenteser, vi 112 00:06:30,900 --> 00:06:32,900 har disse kolon. 113 00:06:32,900 --> 00:06:38,450 Og så, foran våre argumenter, vi settes, på nytt, i parentes typen 114 00:06:38,450 --> 00:06:39,370 av våre argument. 115 00:06:39,370 --> 00:06:43,160 >> Så, akkurat nå prøver jeg å gjøre det sammenligning mellom, du vet, 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 andre er en NSUInteger type. 118 00:06:49,580 --> 00:06:56,390 Og så, med Objective-C, når du ønsker å ha flere argumenter i 119 00:06:56,390 --> 00:07:00,030 metoden klausulen, du, liksom, skille dem ut litt som dette - 120 00:07:00,030 --> 00:07:03,790 Jeg er ikke helt sikker på hvordan jeg skal beskrive det, men dette er et godt eksempel på hvordan du 121 00:07:03,790 --> 00:07:06,530 kan ha flere argumenter i det. 122 00:07:06,530 --> 00:07:10,360 >> Du kan, selvfølgelig, bare helt ignorere andArray kolon NSArray 123 00:07:10,360 --> 00:07:13,240 matrise hvis du bare ville ha en metode som tar i ett argument. 124 00:07:13,240 --> 00:07:13,677 Ja, spørsmålet. 125 00:07:13,677 --> 00:07:18,701 >> PUBLIKUM: Er både NSUInteger og NSArray argumenter som kan tas i 126 00:07:18,701 --> 00:07:21,530 innenfor NSArray? 127 00:07:21,530 --> 00:07:22,060 >> RHED SHI: Ja. 128 00:07:22,060 --> 00:07:23,400 Så, la meg forklare. 129 00:07:23,400 --> 00:07:23,790 Så, ja. 130 00:07:23,790 --> 00:07:30,260 Så, spørsmålet var er NSUInteger og NSArray * typer av argumentene, 131 00:07:30,260 --> 00:07:31,570 og det er riktig. 132 00:07:31,570 --> 00:07:35,700 Så, du alltid ønsker å spesifisere hva type argumentet ditt er. 133 00:07:35,700 --> 00:07:41,570 Og her, jeg prøver å introdusere deg til noen av syntaksen og vocab av 134 00:07:41,570 --> 00:07:45,910 Objective-C, så de som er faktiske typer at du vil være med å gjøre. 135 00:07:45,910 --> 00:07:48,970 >> Og som du vil legge merke til, matriser er fjernet, på en måte, 136 00:07:48,970 --> 00:07:50,780 enkle brakett ting. 137 00:07:50,780 --> 00:07:52,060 De er stedene. 138 00:07:52,060 --> 00:07:56,700 Selv om, hvis vi går videre til neste lysbilde, kan vi se at vi kan 139 00:07:56,700 --> 00:08:02,510 hard-kode en NSArray i Objective-C med rett og slett en på symbol foran 140 00:08:02,510 --> 00:08:04,190 brakettene. 141 00:08:04,190 --> 00:08:08,650 Jeg er ikke, faktisk, ganske sikker på om Jeg syntaktisk hardkodet en matrise 142 00:08:08,650 --> 00:08:16,020 riktig for C-versjonen, men det er ment å være i en C-array. 143 00:08:16,020 --> 00:08:19,760 >> Så, er det slik du vil, vet du, kanskje bruke funksjoner eller 144 00:08:19,760 --> 00:08:21,990 metoder som vi opprettet tidligere. 145 00:08:21,990 --> 00:08:22,250 Høyre? 146 00:08:22,250 --> 00:08:25,340 Så, er dette hvor vi erklærer vår funksjon og vår metode. 147 00:08:25,340 --> 00:08:28,020 Og nå ønsker vi å bruke dem i vårt program, og dette er 148 00:08:28,020 --> 00:08:29,450 hvordan vi ville gjøre det. 149 00:08:29,450 --> 00:08:32,400 Så, i C, vil du ha, du vet, kanskje, en bool b, og du setter den til 150 00:08:32,400 --> 00:08:36,549 lik funksjon, og deretter du passerer i argumentene. 151 00:08:36,549 --> 00:08:39,190 >> I Objective-C, er det ganske mye det samme. 152 00:08:39,190 --> 00:08:43,370 Du har NSArray * my_array, og det er kommer til å like - nå, den eneste 153 00:08:43,370 --> 00:08:47,460 Forskjellen her er dette objektet tingen, som jeg har uthevet i gult, og 154 00:08:47,460 --> 00:08:51,180 som du kan se, i C, er det ingen andre gul ord. 155 00:08:51,180 --> 00:08:54,170 Og det er fordi metoder tilhører med et bestemt objekt. 156 00:08:54,170 --> 00:08:59,800 Så det er derfor jeg må ha et objekt det, liksom, kaller denne metoden på 157 00:08:59,800 --> 00:09:04,360 tallet null, og deretter den NSArray a, b, c, d. 158 00:09:04,360 --> 00:09:05,350 Eventuelle spørsmål om det? 159 00:09:05,350 --> 00:09:12,190 >> Vi får se disse begrepene i aksjon ganske snart når vi går inn i en demo. 160 00:09:12,190 --> 00:09:13,400 OK. 161 00:09:13,400 --> 00:09:17,170 Nå ønsker jeg å snakke litt kort om Xcode 5, som er 162 00:09:17,170 --> 00:09:21,160 integrert utviklingsmiljø at du skal jobbe med. 163 00:09:21,160 --> 00:09:26,160 Jeg vet mange av dere, eller noen av dere, har Mac, noe som er et problem 164 00:09:26,160 --> 00:09:30,490 fordi Xcode er ikke tilgjengelig for Windows og PC. 165 00:09:30,490 --> 00:09:32,785 Ikke spør meg hvorfor, men sannsynligvis - 166 00:09:32,785 --> 00:09:33,730 yeah, corporate. 167 00:09:33,730 --> 00:09:35,290 Uansett. 168 00:09:35,290 --> 00:09:39,360 Men uansett, så, beklager jeg hvis noen av du trenger å laste ned noen form for 169 00:09:39,360 --> 00:09:43,000 virtuell maskin for Mac i For å kjøre Xcode fem. 170 00:09:43,000 --> 00:09:46,460 Men det er en ganske kjekk liten programvare som skal brukes. 171 00:09:46,460 --> 00:09:51,280 >> Og så, før vi dykke inn i noen form av demo, jeg bare ønsker å vise deg et 172 00:09:51,280 --> 00:09:55,700 bilde av hva Xcode ser ut i din vindu, og deretter også snakke om 173 00:09:55,700 --> 00:09:57,670 hva hele denne plassen er. 174 00:09:57,670 --> 00:10:01,600 Så, det er litt som å lære å bruke Microsoft Word, bortsett fra at du ønsker å 175 00:10:01,600 --> 00:10:04,675 bli kjent med alle forskjellige ting som 176 00:10:04,675 --> 00:10:06,250 er det som skjer her. 177 00:10:06,250 --> 00:10:11,160 >> Så først, jeg ønsker å peke deg til verktøylinjen øverst. 178 00:10:11,160 --> 00:10:14,450 Du vil se at, på toppen, vil du ha filnavnet - 179 00:10:14,450 --> 00:10:18,100 eller, faktisk, prosjektnavn og deretter filnavnet. 180 00:10:18,100 --> 00:10:20,940 Legg merke til lek og stoppknapper. 181 00:10:20,940 --> 00:10:24,210 De er de som du vil være bruker til å kjøre programmet ditt 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, slik at du ikke trenger å bekymre deg for 185 00:10:29,940 --> 00:10:32,070 laste ned en slags simulator. 186 00:10:32,070 --> 00:10:34,700 Du bare trykker på play og så det går programmet ditt. 187 00:10:34,700 --> 00:10:39,230 Og du kan spille rundt med deg, og vil du se hvordan det fungerer senere. 188 00:10:39,230 --> 00:10:42,690 >> Og så, i sentrum, selvfølgelig, er der alle dine vakre kode er 189 00:10:42,690 --> 00:10:44,240 kommer til å gå. 190 00:10:44,240 --> 00:10:48,340 Og så, på venstre side, vil du har dette, liksom, mappe - 191 00:10:48,340 --> 00:10:50,340 navigasjon - 192 00:10:50,340 --> 00:10:53,970 og da vil du også se at, sammen med mappeikonet, er det en 193 00:10:53,970 --> 00:10:57,680 haug med andre ikoner der ute som vil være nyttig senere. 194 00:10:57,680 --> 00:11:04,710 >> Og så, på høyre side er et verktøy område hvor du kan jobbe med 195 00:11:04,710 --> 00:11:09,620 noen av objektene og spesifisere, du vet, hva fargen skal være, hva 196 00:11:09,620 --> 00:11:12,040 skriften skal være, et cetera. 197 00:11:12,040 --> 00:11:15,890 Selv om alt du gjør i et bruksområde, kan du 198 00:11:15,890 --> 00:11:17,480 gjøre i kode i tillegg. 199 00:11:17,480 --> 00:11:21,630 Og så, jeg må gå gjennom to eksempler på bruk, er det bare, ingen kode 200 00:11:21,630 --> 00:11:23,730 alle - eller svært minimal kode - 201 00:11:23,730 --> 00:11:28,290 versene all kode, bare slik at dere vet hva du kan og ikke kan gjø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 så, endelig, ned på bunnen, du har debug området. 204 00:11:32,770 --> 00:11:37,270 Så, trenger du ikke lenger å kjøre GDB, et cetera, på programmene. 205 00:11:37,270 --> 00:11:39,180 Det gjør det automatisk for deg. 206 00:11:39,180 --> 00:11:42,880 Og du kan også skrive ut ting til dette området. 207 00:11:42,880 --> 00:11:46,790 Så egentlig, senere, vil vi gå gjennom mario.c, hvis dere fortsatt husker 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 gøy. 210 00:11:50,360 --> 00:11:55,870 >> Og så, bare for å bringe det tilbake til Objective-C, jeg ønsker å fremheve hva 211 00:11:55,870 --> 00:11:57,440 du kan gjøre med hvis uttalelser. 212 00:11:57,440 --> 00:12:03,160 Så, du vet, fordi Objective-C er en supersett av C, alt du gjør er, 213 00:12:03,160 --> 00:12:06,890 bokstavelig talt, det samme som C. Du bare har små forskjeller. 214 00:12:06,890 --> 00:12:10,810 Så, vil du legge merke til skjemaet for en hvis uttalelsen er fortsatt den samme - du har 215 00:12:10,810 --> 00:12:14,280 hvis, og da har du parenteser med en tilstand inne i, det og deretter 216 00:12:14,280 --> 00:12:17,150 klammeparentes for hva du ønsker å gjøre inne på det. 217 00:12:17,150 --> 00:12:21,680 >> Men jeg ønsket å sette dette lysbildet opp her bare for å illustrere at, 218 00:12:21,680 --> 00:12:25,680 fordi vi har å gjøre med gjenstander nå, vi er nødt til å bruke disse tingene 219 00:12:25,680 --> 00:12:31,240 heter som er lik strengen, som er tilfeldig, en fremgangsmåte for en 220 00:12:31,240 --> 00:12:33,710 string eller en NSString objekt. 221 00:12:33,710 --> 00:12:38,600 Så, ord, i dette tilfellet, er en NSString objekt, og den har en metode som kalles er 222 00:12:38,600 --> 00:12:44,150 lik streng, og da vi passerer i en hardkodet streng for å se 223 00:12:44,150 --> 00:12:48,110 hvorvidt disse er like til hverandre. 224 00:12:48,110 --> 00:12:51,580 >> Eventuelle spørsmål så langt? 225 00:12:51,580 --> 00:12:52,440 OK. 226 00:12:52,440 --> 00:12:56,190 Og, ønsker jeg å gå over en for uttalelse også. 227 00:12:56,190 --> 00:13:01,420 >> Så, for eksempel hvis vi ønsket å sløyfe over lengden av en streng C, denne 228 00:13:01,420 --> 00:13:03,710 bør være kjent for deg. 229 00:13:03,710 --> 00:13:07,840 Og, i Objective-C, vil jeg å markere dette, liksom, 230 00:13:07,840 --> 00:13:09,235 metode som kalles teller. 231 00:13:09,235 --> 00:13:13,260 232 00:13:13,260 --> 00:13:15,550 Vel, faktisk, la meg bare ta det tilbake. 233 00:13:15,550 --> 00:13:17,200 Count er en metode for matrisen. 234 00:13:17,200 --> 00:13:21,070 Men det er mer spesifikt en eiendom av array, som er grunnen til at du 235 00:13:21,070 --> 00:13:22,380 kan bruke dot notasjon. 236 00:13:22,380 --> 00:13:25,870 Men jeg ønsker ikke å komme inn i for mye av Dette konseptuelle ting, jeg vil bare ha 237 00:13:25,870 --> 00:13:30,140 vise deg hvordan ting ville se som i Objective-C versus C. 238 00:13:30,140 --> 00:13:35,400 >> Og også, jeg ønsker å påpeke at selv om jeg har brukt NSUInteger 239 00:13:35,400 --> 00:13:39,860 foran alle mitt jeg er i Objective-C, du kan også bruke int, fordi int er 240 00:13:39,860 --> 00:13:42,290 helt gyldig 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: Yeah. 244 00:13:44,760 --> 00:13:46,060 Så, som du ser - 245 00:13:46,060 --> 00:13:49,390 så, var spørsmålet er at bare en stilistisk problemet. 246 00:13:49,390 --> 00:13:54,820 Som du ser, har jeg en, liksom, stjerne asterisk ting ned på bunnen, og 247 00:13:54,820 --> 00:13:59,870 at koblingen tar deg til en stack overflow form, der noen forklarer 248 00:13:59,870 --> 00:14:03,640 forskjellen mellom en int i NSInteger og en NSUInteger. 249 00:14:03,640 --> 00:14:05,540 Og så kan du lese om det senere. 250 00:14:05,540 --> 00:14:07,640 Disse bilder vil være selvsagt tilgjengelig for deg. 251 00:14:07,640 --> 00:14:10,300 252 00:14:10,300 --> 00:14:11,280 >> La oss se. 253 00:14:11,280 --> 00:14:12,150 OK, awesome. 254 00:14:12,150 --> 00:14:15,410 Så, er dette også inkludert i lysbildet fordi jeg trodde dette var en stor 255 00:14:15,410 --> 00:14:19,370 nettsted som introduserer deg til Objective-C syntaks. 256 00:14:19,370 --> 00:14:24,410 Så, faktisk, hvorfor ikke vi flytte til Chrome og sjekk ut denne nettsiden? 257 00:14:24,410 --> 00:14:30,650 258 00:14:30,650 --> 00:14:31,300 >> Høyre. 259 00:14:31,300 --> 00:14:36,670 Så, hva jeg ønsker å vise deg Gutta her er dette bildet. 260 00:14:36,670 --> 00:14:41,630 Så, dette er, liksom, kommer til å være det du kommer til å se innsiden av en hvilken som helst 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 Egentlig, hvorfor ikke vi bare ta en øyeblikk til, liksom, ta dette i. 264 00:14:51,430 --> 00:14:53,470 >> Så, denne boken - 265 00:14:53,470 --> 00:14:55,880 det er objektet som vi har med å gjøre. 266 00:14:55,880 --> 00:14:59,680 Og da har det åpenbart kommer til å være arvet fra et annet objekt, men 267 00:14:59,680 --> 00:15:01,810 du trenger ikke å bekymre deg for det. 268 00:15:01,810 --> 00:15:04,430 Og så, det, kanskje, har noen medlemsvariabler. 269 00:15:04,430 --> 00:15:09,160 >> Det viktigste jeg ønsker å vise deg er de instansmetoder, her. 270 00:15:09,160 --> 00:15:12,670 Så, er instansmetoder betegnet av dette minustegnet. 271 00:15:12,670 --> 00:15:15,550 Og så, som du vil legge merke til, er vi allerede begynt å se paradigmet 272 00:15:15,550 --> 00:15:17,670 for metode erklæringen, ikke sant? 273 00:15:17,670 --> 00:15:22,670 Den returtype, metoden navnet,, og deretter typen argumentet, og 274 00:15:22,670 --> 00:15:24,660 deretter navnet på argumentet. 275 00:15:24,660 --> 00:15:29,090 Og dette minustegnet betyr at det er en eksempel-metoden, noe som betyr at 276 00:15:29,090 --> 00:15:32,270 disse metodene er kun tilgjengelig for gjenstander som har blitt instansiert. 277 00:15:32,270 --> 00:15:35,050 278 00:15:35,050 --> 00:15:39,100 >> Til kontrast som, metoder med et pluss logg inn foran dem er klasse 279 00:15:39,100 --> 00:15:43,640 metoder, noe som betyr at du kan ringe disse metodene, selv om du ikke har 280 00:15:43,640 --> 00:15:45,970 et objekt laget ennå. 281 00:15:45,970 --> 00:15:51,600 Så, for eksempel en klar, NSString er en klasse. 282 00:15:51,600 --> 00:15:55,850 Og du kan ringe, for eksempel, klassemetoder på NSString - 283 00:15:55,850 --> 00:15:58,660 selve liksom ordet NSString. 284 00:15:58,660 --> 00:16:02,050 >> Men, for å kunne bruke disse metoder, du faktisk 285 00:16:02,050 --> 00:16:03,460 behov for å opprette en streng. 286 00:16:03,460 --> 00:16:08,980 For eksempel tilsvarer NSString stjerne streng ved anførselstegn, hello world. 287 00:16:08,980 --> 00:16:10,910 Og så kan du bruke disse metodene - 288 00:16:10,910 --> 00:16:11,990 instansmetoder - 289 00:16:11,990 --> 00:16:14,790 på at hello world streng. 290 00:16:14,790 --> 00:16:17,825 Så, det er forskjellen mellom instansmetoder og klassemetoder. 291 00:16:17,825 --> 00:16:20,390 292 00:16:20,390 --> 00:16:21,930 >> Og, vi bare dekket denne delen. 293 00:16:21,930 --> 00:16:25,300 294 00:16:25,300 --> 00:16:33,750 Egenskaper er en annen ting som er innsiden av objekter, i utgangspunktet. 295 00:16:33,750 --> 00:16:37,530 Og du erklære dem med den på eiendommen søkeord. 296 00:16:37,530 --> 00:16:39,940 Du har disse mulighetene, her, at jeg skal forklare senere når 297 00:16:39,940 --> 00:16:43,110 vi går inn i en demo. 298 00:16:43,110 --> 00:16:43,660 Ja? 299 00:16:43,660 --> 00:16:43,950 Hei. 300 00:16:43,950 --> 00:16:45,440 >> PUBLIKUM: Kan du zoome inn, please? 301 00:16:45,440 --> 00:16:46,130 >> RHED SHI: Oh yes. 302 00:16:46,130 --> 00:16:46,560 Unnskyld. 303 00:16:46,560 --> 00:16:49,140 >> PUBLIKUM: Takk. 304 00:16:49,140 --> 00:16:50,005 >> RHED SHI: Det burde være mye bedre. 305 00:16:50,005 --> 00:16:51,240 >> PUBLIKUM: Yeah. 306 00:16:51,240 --> 00:16:53,940 Takk. 307 00:16:53,940 --> 00:16:56,815 >> RHED SHI: Ja, kan du minne meg om Jeg glemmer å zoome inn eller ut. 308 00:16:56,815 --> 00:17:00,590 309 00:17:00,590 --> 00:17:03,570 Så, er dette alt jeg ønsket å vise deg for - 310 00:17:03,570 --> 00:17:05,970 Jøss, det er mye - 311 00:17:05,970 --> 00:17:06,790 for denne nettsiden. 312 00:17:06,790 --> 00:17:12,210 Så, la oss gå tilbake til våre lysbilder. 313 00:17:12,210 --> 00:17:17,819 >> Egentlig, nå la oss ta et øyeblikk å dykke inn en demo. 314 00:17:17,819 --> 00:17:25,490 Så vil vi starte med en ny Xcode-prosjekt. 315 00:17:25,490 --> 00:17:33,040 Så, hvis du vil åpne opp Xcode på alle dine maskiner, skal det ta deg litt 316 00:17:33,040 --> 00:17:36,720 side der det står, som, enten åpent opp et eksisterende prosjekt eller en ny 317 00:17:36,720 --> 00:17:39,230 prosjekt, og du bør Klikk et nytt prosjekt. 318 00:17:39,230 --> 00:17:41,477 Og da bør det ta deg til denne skjermen. 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, trenger vi bare slags slappe? 321 00:17:44,279 --> 00:17:46,870 >> RHED SHI: Eller se på med noen, ja. 322 00:17:46,870 --> 00:17:47,740 Yeah. 323 00:17:47,740 --> 00:17:50,660 Du kan slappe av, også. 324 00:17:50,660 --> 00:17:51,570 OK. 325 00:17:51,570 --> 00:17:55,410 >> Så, hva skal vi gjøre først, nå, er, faktisk, vi kommer til å gjøre en 326 00:17:55,410 --> 00:17:56,600 enkelt visning søknad. 327 00:17:56,600 --> 00:18:01,340 Så, hvis du vil legge merke til, hva er flott om Xcode og Apple støtte for 328 00:18:01,340 --> 00:18:05,690 utviklere er at du har mye av maler for å jobbe med allerede. 329 00:18:05,690 --> 00:18:09,210 Du kan for eksempel lage en herre-detalj søknad. 330 00:18:09,210 --> 00:18:10,920 Du kan lage et spill - 331 00:18:10,920 --> 00:18:13,860 og faktisk, vil jeg ikke gå inn i spill, fordi spill er en annen historie 332 00:18:13,860 --> 00:18:15,320 for iOS utvikling. 333 00:18:15,320 --> 00:18:18,930 Og de er slags skille, så jeg vil ikke gå inn på det. 334 00:18:18,930 --> 00:18:22,580 >> Så, du har sidebasert applikasjoner. 335 00:18:22,580 --> 00:18:24,010 Du har en fane søknad - 336 00:18:24,010 --> 00:18:29,350 så liker, for eksempel Bank of America sannsynligvis har, som, en fanebasert app. 337 00:18:29,350 --> 00:18:32,140 Det er de hvor du har knappene nederst. 338 00:18:32,140 --> 00:18:34,750 Og da har du en Sprite Kit spillet. 339 00:18:34,750 --> 00:18:38,670 >> Eller du kan jobbe fra bunnen av, som er hva vi skal gjøre senere. 340 00:18:38,670 --> 00:18:42,470 Men la oss først starte med en enkelt visning søknad. 341 00:18:42,470 --> 00:18:48,590 Deretter vil det be om et produktnavn, og vi kan bare gjøre testen. 342 00:18:48,590 --> 00:18:50,190 Navn på organisasjonen - 343 00:18:50,190 --> 00:18:54,140 så, organisasjonsnavn, selskap identifikator - 344 00:18:54,140 --> 00:18:58,100 de som er viktig hvis du skal å sette din app på App Store. 345 00:18:58,100 --> 00:19:01,110 346 00:19:01,110 --> 00:19:05,116 Annet enn det, er koden din kommer til å kjøre helt fint uten dette. 347 00:19:05,116 --> 00:19:09,940 >> Dette kommer til å være viktig hvis du ønsker - så, per se, som, sette app 348 00:19:09,940 --> 00:19:14,080 på din telefon eller noe, og test det ut, du vet, i det virkelige liv - 349 00:19:14,080 --> 00:19:15,360 Dette vil være viktig. 350 00:19:15,360 --> 00:19:20,110 Dette har en tendens til 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å, jeg vet, sannsynligvis, mange av dere vil ikke ha noen utviklerkontoer. 353 00:19:24,740 --> 00:19:26,460 Jeg vet at 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, du kan sende meg og jeg skal prøve å finne det ut for deg. 356 00:19:32,770 --> 00:19:38,210 Men akkurat nå, jeg har nettopp satt i noen eksempel ting her. 357 00:19:38,210 --> 00:19:41,250 >> Og du kan selvfølgelig her, velger om du vil at det skal være utelukkende i 358 00:19:41,250 --> 00:19:44,410 iPhone, i iPad, eller begge deler - 359 00:19:44,410 --> 00:19:46,630 universell bruk. 360 00:19:46,630 --> 00:19:56,170 Så, for nå, la oss gjøre universell, bare for å se på begge sider av plattformen. 361 00:19:56,170 --> 00:19:57,120 >> La oss se. 362 00:19:57,120 --> 00:20:01,510 Så, akkurat nå, kommer jeg til å spare det i en slags mappe. 363 00:20:01,510 --> 00:20:04,500 Spiller ingen rolle hvor - du kan alltids flytte det senere. 364 00:20:04,500 --> 00:20:09,380 Og nå, vi er brakt til vår Xcode-prosjekt. 365 00:20:09,380 --> 00:20:12,890 Jeg ville ikke bekymre deg for alt dette. 366 00:20:12,890 --> 00:20:17,510 Jeg foreslår ikke å berøre noen av dette, med mindre du vet nøyaktig hva 367 00:20:17,510 --> 00:20:18,260 du gjør. 368 00:20:18,260 --> 00:20:21,750 Så, alt dette, bare ignorer for det meste. 369 00:20:21,750 --> 00:20:26,940 Du trenger ikke å røre den, og hvis du du rotet opp noen ting her, det 370 00:20:26,940 --> 00:20:28,600 blir litt vanskelig. 371 00:20:28,600 --> 00:20:32,480 >> Så, hvorfor ikke vi se nærmere på filene på 372 00:20:32,480 --> 00:20:34,700 venstre side i vår navigatør. 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, la meg zoome inn 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 La meg zoome inn 380 00:20:59,940 --> 00:21:05,810 >> Høyre, så du har header-filer og du har gjennomførings filer. 381 00:21:05,810 --> 00:21:07,060 Egentlig - 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 Dette er litt rart, men bærer med meg. 385 00:21:11,800 --> 00:21:16,140 Så, fordi vi har valgt en enkelt visning søknad, kommer vi til å være 386 00:21:16,140 --> 00:21:17,340 jobber med storyboard. 387 00:21:17,340 --> 00:21:22,140 >> Så, er storyboard noe som Apple har kommet opp med for å virkelig hjelpe 388 00:21:22,140 --> 00:21:26,550 utviklere raskt prototype søknader sine. 389 00:21:26,550 --> 00:21:29,410 Så, er dette hvor du kan lage en app uten å skrive en 390 00:21:29,410 --> 00:21:31,710 eneste linje med kode. 391 00:21:31,710 --> 00:21:35,390 Men i vår enkelt visning søknad, Vi har, selvfølgelig, ha et 392 00:21:35,390 --> 00:21:41,270 fil for vårt syn, som er et riss i kontrolleren. 393 00:21:41,270 --> 00:21:45,150 Så har vi overskriften og implementering fil, her. 394 00:21:45,150 --> 00:21:52,350 >> Og, jeg kommer til å zoome ut nå fordi vi må arbeide i dreieboken. 395 00:21:52,350 --> 00:21:55,190 Så, her er vårt syn. 396 00:21:55,190 --> 00:22:00,120 Hvis vi, rett og slett, kjøre applikasjonen akkurat nå, det er ikke mye spennende som skjer. 397 00:22:00,120 --> 00:22:03,270 398 00:22:03,270 --> 00:22:05,040 Så, vil du se denne hvit skjerm. 399 00:22:05,040 --> 00:22:06,110 OK? 400 00:22:06,110 --> 00:22:14,010 >> Og, i våre verktøy område, kan vi legge en haug med forskjellige ting til det. 401 00:22:14,010 --> 00:22:19,290 Så, når du arbeider med skjermer i iOS, vise kontrollere er den 402 00:22:19,290 --> 00:22:23,150 gjenstander som innkapsler, liksom, dine synspunkter. 403 00:22:23,150 --> 00:22:26,980 Så, en vise kontrolleren alltid har en egenskap som kalles visning. 404 00:22:26,980 --> 00:22:29,610 Og det synet, vanligvis inneholder, du vet, hva du 405 00:22:29,610 --> 00:22:30,810 ønsker å se på en skjerm. 406 00:22:30,810 --> 00:22:39,210 >> Så, vel, la oss bare starte med å sette, kanskje, kanskje en etikett. 407 00:22:39,210 --> 00:22:41,450 Så, la oss sette en merkelapp på det - 408 00:22:41,450 --> 00:22:44,080 stikke den i midten. 409 00:22:44,080 --> 00:22:49,560 Så, nå som jeg har klikket på etiketten, jeg kan gå inn i egenskaper inspektør 410 00:22:49,560 --> 00:22:51,510 og begynne å endre sin verdi. 411 00:22:51,510 --> 00:22:55,040 La oss kalle det CS50 Colours. 412 00:22:55,040 --> 00:22:58,220 >> Og jeg kan også endre skrift. 413 00:22:58,220 --> 00:23:02,630 Så, i stedet for å gjøre systemet, som er standard, kan vi gjøre en egendefinert en. 414 00:23:02,630 --> 00:23:03,770 Vi kan snu - 415 00:23:03,770 --> 00:23:06,453 du vet, ultralett, gjø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 lage våre boksen større. 418 00:23:11,370 --> 00:23:14,410 >> PUBLIKUM: Tror du at du kan zoome i bare litt mer, kanskje? 419 00:23:14,410 --> 00:23:14,810 >> RHED SHI: Yeah? 420 00:23:14,810 --> 00:23:16,196 OK. 421 00:23:16,196 --> 00:23:17,450 >> PUBLIKUM: Bare trykk på det? 422 00:23:17,450 --> 00:23:19,020 >> RHED SHI: La oss se. 423 00:23:19,020 --> 00:23:20,382 Fungerer dette? 424 00:23:20,382 --> 00:23:22,270 >> PUBLIKUM: Bare pass på Xcode? 425 00:23:22,270 --> 00:23:23,520 >> RHED SHI: Sure. 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: The merkelapp under? 430 00:23:27,072 --> 00:23:28,920 Etiketten? 431 00:23:28,920 --> 00:23:29,480 >> RHED SHI: Hva er det? 432 00:23:29,480 --> 00:23:32,050 >> PUBLIKUM: Hva rullegardin var merkelapp under? 433 00:23:32,050 --> 00:23:35,170 >> RHED SHI: Så, spørsmålet var, hva drop-down var merkelapp under? 434 00:23:35,170 --> 00:23:37,260 Det bør, rett og slett, være under her. 435 00:23:37,260 --> 00:23:39,330 Jeg antar det er en kube ting. 436 00:23:39,330 --> 00:23:40,910 Men vanligvis, er dette standard - 437 00:23:40,910 --> 00:23:43,250 Jeg skal bare ned her før jeg finner 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å nå har vi vår etiketten. 441 00:23:48,950 --> 00:23:51,040 La oss sentrere det. 442 00:23:51,040 --> 00:23:56,410 Og Xcode gir oss retningslinjer for sentre gjenstander. 443 00:23:56,410 --> 00:23:59,510 444 00:23:59,510 --> 00:24:01,480 Så, nå kan vi kjøre vårt koden på nytt. 445 00:24:01,480 --> 00:24:08,110 446 00:24:08,110 --> 00:24:08,800 >> Det vi gå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 Og nå, la oss sette en knapp på det, ikke sant? 450 00:24:15,420 --> 00:24:17,480 Fordi vi ønsker å gjøre denne interaktive. 451 00:24:17,480 --> 00:24:19,410 Så, la oss sette en knapp her. 452 00:24:19,410 --> 00:24:39,020 Og vi vil kalle denne knappen "trykk her å fortsette. "Vi vil sentrere det, også 453 00:24:39,020 --> 00:24:39,990 Egentlig er det allerede sentrert. 454 00:24:39,990 --> 00:24:40,630 Yeah. 455 00:24:40,630 --> 00:24:43,130 >> Så nå har vi en knapp. 456 00:24:43,130 --> 00:24:53,000 Og hvis vi kjører dette igjen, skal vi å ha en fin liten knapp her. 457 00:24:53,000 --> 00:24:56,520 Og jeg kan klikke det, men det gjør ikke noe, fordi vi har ikke gjort 458 00:24:56,520 --> 00:24:58,500 noe med den knappen enda. 459 00:24:58,500 --> 00:25:01,740 >> Så, la oss lage en annen visning, ikke sant? 460 00:25:01,740 --> 00:25:04,160 Så, la oss si at jeg ønsker å tappe den knappen, og jeg ønsker å 461 00:25:04,160 --> 00:25:05,730 gå til en annen side - 462 00:25:05,730 --> 00:25:06,820 et annet syn. 463 00:25:06,820 --> 00:25:14,440 Hva jeg kommer til å gjøre er, kan jeg lage en vise kontrolleren, ikke sant? 464 00:25:14,440 --> 00:25:19,690 Nå skal jeg klikker på min knappen, og deretter, det viktigste er, jeg kommer til å 465 00:25:19,690 --> 00:25:20,910 klikk - eller - 466 00:25:20,910 --> 00:25:23,660 ja, trykk kontroll på tastaturet mitt. 467 00:25:23,660 --> 00:25:24,880 Kontroll. 468 00:25:24,880 --> 00:25:27,005 Klikk på knappen, og deretter drar. 469 00:25:27,005 --> 00:25:29,960 470 00:25:29,960 --> 00:25:33,550 >> Så husk å holde på styretasten. 471 00:25:33,550 --> 00:25:35,160 La oss gjøre det igjen. 472 00:25:35,160 --> 00:25:40,930 Så, hold kontroll, klikk, og dra til hva du ønsker å gjøre. 473 00:25:40,930 --> 00:25:41,520 OK. 474 00:25:41,520 --> 00:25:43,610 >> Og nå, har jeg flere alternativer her. 475 00:25:43,610 --> 00:25:47,900 Jeg kan enten presse, eller jeg kan gjøre en modal, eller jeg kan gjøre en egendefinert. 476 00:25:47,900 --> 00:25:50,900 Push er bare hvis du har en navigeringskontrolleren. 477 00:25:50,900 --> 00:25:54,270 Akkurat nå, vår aller første visning kontrolleren er ikke inne på noe 478 00:25:54,270 --> 00:25:55,610 navigeringskontrolleren. 479 00:25:55,610 --> 00:25:59,500 Så, er navigeringskontrolleren den ene som gir deg tilbake-knappen på 480 00:25:59,500 --> 00:26:03,910 iOS-applikasjonen, hvor du har, vet du, at toppen, liksom, tykk bar - 481 00:26:03,910 --> 00:26:06,480 hvor du kan gå tilbake, eller fremover, et cetera. 482 00:26:06,480 --> 00:26:07,740 Akkurat nå har jeg ikke det. 483 00:26:07,740 --> 00:26:11,050 Og så, det er derfor jeg ikke kan gjøre en push. 484 00:26:11,050 --> 00:26:12,480 >> Så, jeg klikket på trykk uhell, her. 485 00:26:12,480 --> 00:26:16,480 Og faktisk, la oss kjøre koden, og det skulle krasje på meg. 486 00:26:16,480 --> 00:26:19,770 487 00:26:19,770 --> 00:26:22,960 Bare hvis jeg trykker på knappen skjønt, så - 488 00:26:22,960 --> 00:26:23,420 høyre. 489 00:26:23,420 --> 00:26:26,480 Så, er dette dårlig. 490 00:26:26,480 --> 00:26:31,330 >> Og, som du kan se, her, vi har feilmeldingen. 491 00:26:31,330 --> 00:26:35,460 Så, "Push segues kan bare brukes når kilde kontrolleren er administrert av et 492 00:26:35,460 --> 00:26:40,700 forekomst av UI-navigeringskontrolleren. " Så, fordi dette ikke var inne i en 493 00:26:40,700 --> 00:26:44,030 navigeringskontroller, Jeg kunne ikke gjøre det. 494 00:26:44,030 --> 00:26:48,782 >> Så, akkurat nå, kommer jeg tilbake til mappe, kommer tilbake til storyboard. 495 00:26:48,782 --> 00:26:51,680 >> PUBLIKUM: Hva er navigasjon kontrolleren, på nytt? 496 00:26:51,680 --> 00:26:55,260 >> RHED SHI: Så, akkurat nå skal jeg vise deg. 497 00:26:55,260 --> 00:26:56,200 La oss se. 498 00:26:56,200 --> 00:27:00,510 Så, jeg kommer til å klikke på denne visningen kontrolleren, og da kommer jeg til å gå 499 00:27:00,510 --> 00:27:03,920 opp til produkt - 500 00:27:03,920 --> 00:27:06,240 faktisk, nei, beklager - redaktør. 501 00:27:06,240 --> 00:27:08,360 Og jeg kommer til å gå inn - 502 00:27:08,360 --> 00:27:09,350 faktisk, det gjorde jeg klikker på det? 503 00:27:09,350 --> 00:27:10,070 Nei. 504 00:27:10,070 --> 00:27:11,080 Det vi går. 505 00:27:11,080 --> 00:27:16,270 Jeg kommer til å gå opp i editoren, gå ned å bygge inn i, og deretter navigasjon 506 00:27:16,270 --> 00:27:17,520 kontrolleren. 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, ser min arbeidsplass veldig rotete, så la oss rydde opp. 510 00:27:27,750 --> 00:27:29,000 Så, er alt dette storyboard. 511 00:27:29,000 --> 00:27:32,510 512 00:27:32,510 --> 00:27:33,760 Og på denne måten - 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 Jeg kan raskt bygge noe som dette. 517 00:27:50,860 --> 00:27:53,020 Og så, nå kan jeg gå tilbake, vet du? 518 00:27:53,020 --> 00:27:55,730 >> Men dette er litt kjedelig, ikke sant? 519 00:27:55,730 --> 00:28:03,020 Så, hva jeg ønsker å gjøre er, jeg vil ikke ha å gjøre, rett og slett, en visning 520 00:28:03,020 --> 00:28:03,870 kontrolleren. 521 00:28:03,870 --> 00:28:07,720 La oss si at jeg ønsket å faktisk gjøre en tabellvisning kontrolleren, slik at jeg kan sette i 522 00:28:07,720 --> 00:28:12,110 noen fine farger, inn i tabellen. 523 00:28:12,110 --> 00:28:16,210 >> Så, nå som jeg har satt i mitt tabellvisning kontrolleren, trenger jeg å koble den tilbake 524 00:28:16,210 --> 00:28:18,560 fra denne knappen til view controller. 525 00:28:18,560 --> 00:28:21,780 Så jeg må gjøre min kontroll, Klikk, dra ting igjen. 526 00:28:21,780 --> 00:28:27,318 Og nå kan jeg gjøre push, fordi jeg embed det inne i en navigeringskontroller. 527 00:28:27,318 --> 00:28:32,210 >> PUBLIKUM: Navigasjon kontrolleren bare gjør det mulig å 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å, mer teknisk, er det et objekt der - 530 00:28:38,670 --> 00:28:43,150 slik at, på innsiden av navigasjons kontrolleren objekt, det 531 00:28:43,150 --> 00:28:44,780 holder styr på en matrise. 532 00:28:44,780 --> 00:28:48,300 Og denne matrisen holder all den påfølgende vise kontrollere. 533 00:28:48,300 --> 00:28:51,560 Derfor når du trykker tilbake, det går tilbake til forrige side. 534 00:28:51,560 --> 00:28:55,260 Fordi navigeringskontroller objekt, eller den kode som tar seg av 535 00:28:55,260 --> 00:28:58,890 dette formål, har en matrise som holder spore av disse visningskontrollere, og 536 00:28:58,890 --> 00:29:01,870 Deretter kan du, du vet, DQ utsikten kontrolleren og gi deg tilbake 537 00:29:01,870 --> 00:29:02,750 forrige. 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 skal vise deg senere i kode, hvis vi har tid. 540 00:29:07,505 --> 00:29:10,270 Jeg er litt for å kjøre ut på tid, men - 541 00:29:10,270 --> 00:29:15,610 >> Så, med bordvisningen hva vi kan gjøre er - 542 00:29:15,610 --> 00:29:18,440 Det er vanligvis automatisk satt til Dynamic Prototype - 543 00:29:18,440 --> 00:29:20,640 vi kommer til å gjøre det Statiske Cells, ellers skal vi 544 00:29:20,640 --> 00:29:22,920 støte på noen problemer. 545 00:29:22,920 --> 00:29:28,470 >> Og da, la oss si at jeg skal å ha en seksjon. 546 00:29:28,470 --> 00:29:31,000 Så, er deler som - 547 00:29:31,000 --> 00:29:35,160 Hvis du noensinne har sett musikk app, når du har kunstnere, deler ville 548 00:29:35,160 --> 00:29:37,830 være A-er gjennom Z's - 549 00:29:37,830 --> 00:29:38,780 bokstavene - 550 00:29:38,780 --> 00:29:42,600 og da, vet du, den enkelte rader ville være artistnavn. 551 00:29:42,600 --> 00:29:47,460 Og så, hva som er kult her, er at jeg kan tilgang til alle objektene inni 552 00:29:47,460 --> 00:29:50,430 av min storyboard gjennom dette drop-down menyen, også. 553 00:29:50,430 --> 00:29:56,600 >> Så, jeg kommer til å klikke på min del, og jeg vil ha, du vet, kanskje fem rader. 554 00:29:56,600 --> 00:30:00,770 Og så, på innsiden av hver rad, Jeg ønsker å sette en merkelapp. 555 00:30:00,770 --> 00:30:04,080 556 00:30:04,080 --> 00:30:06,340 Og jeg kommer til å kalle dette blå. 557 00:30:06,340 --> 00:30:09,530 558 00:30:09,530 --> 00:30:15,630 Og så ønsker jeg å sette en UI utsikt, du vet, kanskje for, som, en liten boks. 559 00:30:15,630 --> 00:30:23,840 560 00:30:23,840 --> 00:30:28,710 >> Slik at jeg kan vise folk en forhåndsvisning av farge. 561 00:30:28,710 --> 00:30:34,150 Og jeg vil gå tilbake til eiendommen og endre den fargen til, oh, jeg gjør ikke det 562 00:30:34,150 --> 00:30:35,510 vet, denne. 563 00:30:35,510 --> 00:30:38,630 564 00:30:38,630 --> 00:30:43,150 >> Og så, legge merke til også, her, når jeg har tilbehør, kan jeg ha mye 565 00:30:43,150 --> 00:30:46,160 av de forskjellige tilbehør som du vanligvis ser. 566 00:30:46,160 --> 00:30:55,250 Avsløringen indikator, detalj, eller hake, eller rett og slett bare detaljer. 567 00:30:55,250 --> 00:30:59,080 Så, kanskje vi kan gjøre, som, en avsløring indikator, f.eks. 568 00:30:59,080 --> 00:31:03,540 >> Og så, hvorfor ikke vi ta disse, kopi lime dem, og sette dem inn i 569 00:31:03,540 --> 00:31:06,740 neste tabell rad. 570 00:31:06,740 --> 00:31:08,115 Så kan vi kalle dette Gul. 571 00:31:08,115 --> 00:31:10,620 572 00:31:10,620 --> 00:31:12,155 Og jeg må kanskje utvide denne. 573 00:31:12,155 --> 00:31:15,730 574 00:31:15,730 --> 00:31:17,290 La oss gjøre det gule. 575 00:31:17,290 --> 00:31:20,610 Og på denne måten, kan vi kopiere lime vei ned. 576 00:31:20,610 --> 00:31:24,910 577 00:31:24,910 --> 00:31:25,370 Hva 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å, dette er alle de typiske CS50 farger som du har sett i klassen - 581 00:31:34,740 --> 00:31:37,160 faktisk, beklager - 582 00:31:37,160 --> 00:31:38,410 eller på nettsiden. 583 00:31:38,410 --> 00:31:49,700 584 00:31:49,700 --> 00:31:51,260 Forhåpentligvis dere kan se hva jeg gjør 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 Siste. 588 00:31:58,490 --> 00:32:02,040 >> PUBLIKUM: Hvordan fikk du legger raden i utgangspunktet? 589 00:32:02,040 --> 00:32:04,740 >> RHED SHI: Så, spørsmålet var, hvordan gjorde jeg legge raden i utgangspunktet? 590 00:32:04,740 --> 00:32:07,500 Jeg gikk inn i denne tabellen seksjon - eller hvordan jeg kan 591 00:32:07,500 --> 00:32:09,200 velg tabelldelen - 592 00:32:09,200 --> 00:32:11,250 og da, her, jeg oppdatert antall rader. 593 00:32:11,250 --> 00:32:19,920 594 00:32:19,920 --> 00:32:22,505 >> Og, la meg håpe at dette fungerer. 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 La oss se om dette fungerer. 598 00:32:32,870 --> 00:32:34,000 Oh, perfekt, fantastisk. 599 00:32:34,000 --> 00:32:35,300 OK. 600 00:32:35,300 --> 00:32:40,330 Mens jeg holdt på å bygge opp min demo, noen ting ble ikke justert, så, takk for 601 00:32:40,330 --> 00:32:42,510 applausen. 602 00:32:42,510 --> 00:32:42,920 >> Yeah. 603 00:32:42,920 --> 00:32:44,770 Så, la oss se. 604 00:32:44,770 --> 00:32:47,550 Vi vil gjøre dette til ni bare for å gjøre alt - eller faktisk, la oss bare 605 00:32:47,550 --> 00:32:51,420 slå alle disse inn avsløring indikatorer. 606 00:32:51,420 --> 00:32:55,790 Og så, hva jeg ønsker å vise deg, også, var hvordan jeg kan ta hver av dem 607 00:32:55,790 --> 00:32:59,230 tabellrader og ha dem samhandle - 608 00:32:59,230 --> 00:33:00,150 oh. 609 00:33:00,150 --> 00:33:01,400 Nei. 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 deg - 613 00:33:07,230 --> 00:33:13,080 her, kan jeg sette tittelen på min navigeringskontrolleren, ikke sant? 614 00:33:13,080 --> 00:33:17,090 Så egentlig, vil du legge merke til, så snart jeg integrert dette vise kontrolleren inne 615 00:33:17,090 --> 00:33:22,010 av navigasjonskontrolleren, ser vi navigasjonsfeltet øverst på vår 616 00:33:22,010 --> 00:33:25,340 storyboard representasjon av en visning kontrolleren. 617 00:33:25,340 --> 00:33:29,270 Og så, dette gir oss, som en visuell, liksom, guide til vår synlige skjermen. 618 00:33:29,270 --> 00:33:34,360 Dette er åpenbart kommer til å være navigasjonslinjen. 619 00:33:34,360 --> 00:33:40,950 >> Og hva jeg ønsker å gjøre raskt, nå, er satt i en annen - 620 00:33:40,950 --> 00:33:45,880 så denne tabellen vise kontrolleren jeg gjorde ved å ta en av disse og dra den 621 00:33:45,880 --> 00:33:49,800 her, og det er det som tillatt meg å raskt, egentlig, opprette en tabellvisning 622 00:33:49,800 --> 00:33:50,850 kontrolleren. 623 00:33:50,850 --> 00:33:54,100 Hvis vi har tid skjønt, vil du se det, programmatisk, er det en 624 00:33:54,100 --> 00:33:57,660 litt mer vanskelig å lage en tabell vis-kontrolleren, for det 625 00:33:57,660 --> 00:34:02,520 er et par metoder som er nødvendig for deg å, liksom, skrive 626 00:34:02,520 --> 00:34:07,130 ut for at tabellvisningen kontrolleren til å vises riktig. 627 00:34:07,130 --> 00:34:15,340 >> Men jeg ønsker bare å vise deg, nå, et eksempel på der, hvis jeg tar denne, 628 00:34:15,340 --> 00:34:15,920 for eksempel - 629 00:34:15,920 --> 00:34:18,290 Jeg har satt i en annen visning kontrolleren. 630 00:34:18,290 --> 00:34:27,320 Og nå, la oss si at jeg ønsker å styre bruke alt min aller første blå 631 00:34:27,320 --> 00:34:28,980 tabell rad til her. 632 00:34:28,980 --> 00:34:31,070 Og jeg ønsker å kalle denne blå. 633 00:34:31,070 --> 00:34:32,570 Og så - 634 00:34:32,570 --> 00:34:34,159 la oss se. 635 00:34:34,159 --> 00:34:41,050 Jeg er på visning nå, og jeg kan endre bakgrunnen til blå. 636 00:34:41,050 --> 00:34:45,945 >> Og så, varsel, her, denne rullegardin Menyen gir deg også et hierarki av alt 637 00:34:45,945 --> 00:34:47,040 av disse stedene. 638 00:34:47,040 --> 00:34:50,530 Så en viktig ting å merke seg, her, er at alle disse tingene, her - 639 00:34:50,530 --> 00:34:54,330 denne tabellen vise kontrolleren, bordet view, tabellvisning delen, tabellvisning 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 vet, en etikett er akkurat nå under innholdet utsikt, 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 kjøre denne koden, vi bør se noe - 644 00:35:08,765 --> 00:35:15,816 645 00:35:15,816 --> 00:35:17,870 la oss se om dette - ja. 646 00:35:17,870 --> 00:35:18,670 Så, det vi går. 647 00:35:18,670 --> 00:35:22,120 Men, hvis vi ikke gjør det, ingen av dette andre arbeider. 648 00:35:22,120 --> 00:35:22,500 Høyre? 649 00:35:22,500 --> 00:35:23,800 Så bare dette fungerer. 650 00:35:23,800 --> 00:35:29,100 Og, for ordens skyld tid, vil jeg ikke gå inn, du vet, å sette 651 00:35:29,100 --> 00:35:29,770 ned de andre. 652 00:35:29,770 --> 00:35:32,020 Og dette er slutten på, liksom, storyboard - 653 00:35:32,020 --> 00:35:33,400 hva jeg ønsket å vise du for storyboard. 654 00:35:33,400 --> 00:35:36,330 655 00:35:36,330 --> 00:35:43,490 >> Og, jeg har en jobbet ut eksempel faktisk, akkurat her. 656 00:35:43,490 --> 00:35:48,090 Så, er dette dreieboken at jeg har gjort tidligere. 657 00:35:48,090 --> 00:35:52,740 Så, som du kan se, dette var navigasjonskontrolleren. 658 00:35:52,740 --> 00:35:57,040 Da hadde jeg min første visning kontrolleren, Da jeg hadde min tabellvisning kontrolleren, 659 00:35:57,040 --> 00:35:58,980 og da jeg hadde alle disse - 660 00:35:58,980 --> 00:36:01,180 så tidligere, var jeg gjør noe helt annet. 661 00:36:01,180 --> 00:36:04,450 Så, unnskylde de tingene. 662 00:36:04,450 --> 00:36:07,930 Jeg skal nok rydde det opp senere før Jeg sender den til produksjon. 663 00:36:07,930 --> 00:36:12,800 >> Men, hvis vi kjører dette, vil vi se at alle alternativene er 664 00:36:12,800 --> 00:36:14,050 tilgjengelig for oss. 665 00:36:14,050 --> 00:36:18,540 666 00:36:18,540 --> 00:36:21,320 Bortsett fra at jeg ikke lagde bakgrunn disse fargene. 667 00:36:21,320 --> 00:36:26,510 Så fin enkel applikasjon. 668 00:36:26,510 --> 00:36:28,340 >> Nå, la oss prøve å takle dette programmatisk. 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 å gjøre det, vi bare kommer å starte et nytt Xcode-prosjekt. 672 00:36:37,570 --> 00:36:41,920 Vi vil gjøre det til et tomt program nå, fordi vi ikke ønsker å ha den 673 00:36:41,920 --> 00:36:42,380 storyboard. 674 00:36:42,380 --> 00:36:46,590 Så, jeg rett og slett begrense meg selv til ikke bruke noen av dreieboken, og en 675 00:36:46,590 --> 00:36:49,170 tom søknad vil ikke gi meg et storyboard. 676 00:36:49,170 --> 00:36:52,256 Dette er bare for å hindre meg selv fra juks. 677 00:36:52,256 --> 00:36:54,428 La oss 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 >> Høyre. 684 00:37:09,180 --> 00:37:16,790 Så, her sitter vi igjen med noe annet, men kode. 685 00:37:16,790 --> 00:37:19,460 Så, la meg flytte dette vinduet litt over. 686 00:37:19,460 --> 00:37:22,020 687 00:37:22,020 --> 00:37:22,260 Høyre. 688 00:37:22,260 --> 00:37:28,160 Som du kan se her, de bare filer vi er gitt er AppDelegate.h og prikk 689 00:37:28,160 --> 00:37:30,500 m, og at vi ikke har storyboard lenger. 690 00:37:30,500 --> 00:37:39,580 >> Så hvis vi kjører dette, er vi fortsatt kommer til å komme til den hvite skjermen, takk Gud. 691 00:37:39,580 --> 00:37:42,280 OK - hvit skjerm, men ingenting annet. 692 00:37:42,280 --> 00:37:45,260 Og her er den viktige delen. 693 00:37:45,260 --> 00:37:47,810 Det er der handlingen skjer. 694 00:37:47,810 --> 00:37:51,410 I de tidligere versjonene, er det vanligvis ingen kode, men 695 00:37:51,410 --> 00:37:55,600 storyboard gir i hovedsak koden for denne delen. 696 00:37:55,600 --> 00:37:57,470 Jeg vil ikke gå inn i detaljer om hvordan. 697 00:37:57,470 --> 00:38:02,890 >> Og hva vi ønsker å gjøre nå er, vi ønsker å gå inn her, og denne lille plassen 698 00:38:02,890 --> 00:38:05,050 begynner å skape vår app igjen. 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, sikkert. 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 skal skrive, så dette bør ikke saken for mye. 707 00:38:17,380 --> 00:38:17,940 OK. 708 00:38:17,940 --> 00:38:22,720 >> Så, første, husker vi ønsket å skape en navigeringskontrolleren, ikke sant? 709 00:38:22,720 --> 00:38:27,090 Og også, som du kan se her, Xcode gjør en virkelig god jobb med 710 00:38:27,090 --> 00:38:28,070 self-fylling. 711 00:38:28,070 --> 00:38:31,650 Så, som du vil legge merke til, navnene på alt er mye lenger enn 712 00:38:31,650 --> 00:38:33,910 vanlig, men Xcode fyller det inn for deg. 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 å skape en UI navigasjon kontrolleren pekeren, og jeg kan kalle 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 Nå, hva gjør jeg nå? 718 00:38:44,470 --> 00:38:49,510 Etter dette likhetstegn, trenger jeg å, første, skape det inne i minnet. 719 00:38:49,510 --> 00:38:53,790 Så, jeg kommer til å gjøre NavigationController Alloc - 720 00:38:53,790 --> 00:38:56,640 I så fall er dette likt malloc, at dere brukt i C - 721 00:38:56,640 --> 00:38:58,400 og da, jeg kommer til init det. 722 00:38:58,400 --> 00:39:03,670 >> Så, er det veldig viktig at noen objektet som du oppretter, 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 å lage det og instantialize det inne i minne, og 725 00:39:08,600 --> 00:39:10,480 Nå kan du bruke den. 726 00:39:10,480 --> 00:39:10,780 Greit? 727 00:39:10,780 --> 00:39:14,360 Hvis du ikke gjør det, gjør ditt objekt ikke eksisterer, og du vil kjøre inn i en haug 728 00:39:14,360 --> 00:39:17,290 av problemer. 729 00:39:17,290 --> 00:39:20,250 >> Og så ønsker jeg å skape en vise kontrolleren, ikke sant? 730 00:39:20,250 --> 00:39:25,580 Så, jeg ønsker å skape en UIViewController star - 731 00:39:25,580 --> 00:39:29,620 så, er alt en peker i Objective-C, og jeg kommer til å gjøre 732 00:39:29,620 --> 00:39:31,600 noe 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 hva jeg skal gjøre da er, jeg er gå til - så, husker da vi gjorde 737 00:39:43,450 --> 00:39:45,360 embed i navigeringskontrolleren? 738 00:39:45,360 --> 00:39:46,920 Dette er hvordan du gjør det i kode. 739 00:39:46,920 --> 00:39:54,550 Du kommer til å gjøre navigationController 740 00:39:54,550 --> 00:39:55,780 pushViewController - 741 00:39:55,780 --> 00:39:57,636 >> PUBLIKUM: [uhørbart]. 742 00:39:57,636 --> 00:39:59,030 Vil dette skje for oss, eller -? 743 00:39:59,030 --> 00:40:00,080 >> RHED SHI: Å, ja. 744 00:40:00,080 --> 00:40:00,550 Nei. 745 00:40:00,550 --> 00:40:02,740 Det liker meg bedre. 746 00:40:02,740 --> 00:40:04,670 Nei, det vil fungere for deg, også. 747 00:40:04,670 --> 00:40:06,700 Så, dette er alle metoder. 748 00:40:06,700 --> 00:40:10,400 Så pushViewController er en metode, og også, mer spesifikt, er det en 749 00:40:10,400 --> 00:40:13,590 instansmetode av UI navigeringskontrolleren. 750 00:40:13,590 --> 00:40:20,030 Fordi jeg måtte lage min UI navigasjon kontrolleren stjerne, og da jeg 751 00:40:20,030 --> 00:40:24,510 kan kalle dette pushViewController på min bestemt forekomst av et brukergrensesnitt navigasjon 752 00:40:24,510 --> 00:40:25,010 kontrolleren. 753 00:40:25,010 --> 00:40:29,490 >> PUBLIKUM: Må vi gjøre nøyaktig ord, eller gjør det allerede eksisterer 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 som en funksjon. 756 00:40:32,200 --> 00:40:33,330 Det er som printf. 757 00:40:33,330 --> 00:40:34,390 Det er som scanf. 758 00:40:34,390 --> 00:40:36,250 Det er som strcompare. 759 00:40:36,250 --> 00:40:40,310 Bortsett fra det vet hva du kanskje ønsker å skriver, og legger merke til at det vil alltid 760 00:40:40,310 --> 00:40:42,740 komme opp med ting som er juridisk lov for deg. 761 00:40:42,740 --> 00:40:47,620 Så, hvis ingenting dukker opp her, så noe er galt. 762 00:40:47,620 --> 00:40:50,550 >> Så, pushViewController. 763 00:40:50,550 --> 00:40:52,580 Så, nå, jeg ønsker å presse min nyopprettede 764 00:40:52,580 --> 00:40:56,850 UIViewController, og deretter, animert - 765 00:40:56,850 --> 00:40:57,470 kanskje ikke. 766 00:40:57,470 --> 00:41:00,110 Fordi dette kommer til å være den første visningen kontrolleren. 767 00:41:00,110 --> 00:41:03,210 Jeg mener, selv om jeg gjorde animert, det sannsynligvis ikke vil dukke opp, fordi 768 00:41:03,210 --> 00:41:05,050 det er den første skjermen. 769 00:41:05,050 --> 00:41:06,540 >> Og husk brakettene. 770 00:41:06,540 --> 00:41:08,850 Så husk hvordan vi brukte brakettene? 771 00:41:08,850 --> 00:41:11,870 Og inne i parentesene, den objekt kaller på en metode - 772 00:41:11,870 --> 00:41:15,910 så våre objekt er navigasjons kontrolleren, og metoden er en trykk 773 00:41:15,910 --> 00:41:17,210 view controller animert. 774 00:41:17,210 --> 00:41:21,920 Og se hvordan det tar i to argumenter, og de er atskilt av, liksom, 775 00:41:21,920 --> 00:41:24,390 ord, og et kolon. 776 00:41:24,390 --> 00:41:28,300 Så, prøver å gjøre det hyggelig Objective-C og enkelt for deg å lese høyt - 777 00:41:28,300 --> 00:41:33,020 koden din - og få den semi, liksom, fornuftig. 778 00:41:33,020 --> 00:41:37,150 >> Men, å gjøre nettopp dette er ikke nok. 779 00:41:37,150 --> 00:41:39,780 La meg zoome ut nå. 780 00:41:39,780 --> 00:41:44,210 Gjøre nettopp dette er ikke nok til å få det vi fikk til tidligere. 781 00:41:44,210 --> 00:41:48,580 Så her, vil du legge merke til at det er faktisk ikke kommer til å være noen form for 782 00:41:48,580 --> 00:41:50,190 bar, her, ikke sant? 783 00:41:50,190 --> 00:41:54,680 Det er ingen navigasjonslinjen, noe som betyr at vi fortsatt ikke har fått det. 784 00:41:54,680 --> 00:41:58,850 >> Og vi kan teste det ut, også, ved, kanskje, endre bakgrunns av 785 00:41:58,850 --> 00:42:00,460 ViewController, ikke sant? 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 hadde en bakgrunnsfarge, selv om jeg 790 00:42:07,690 --> 00:42:08,780 ønsket å få tilgang 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å, har det en visning eiendom, som deretter har en bakgrunnsfarge. 793 00:42:19,490 --> 00:42:25,510 >> Og, jeg kan sette den, liksom ordinært, ved å kalle fargen 794 00:42:25,510 --> 00:42:28,130 på UIColor objekt. 795 00:42:28,130 --> 00:42:33,210 Så, varsel her, er redColor en metode. 796 00:42:33,210 --> 00:42:36,750 Det er en klasse metode for UIcolor. 797 00:42:36,750 --> 00:42:40,820 Fordi jeg ikke har til å skape en Selve forekomst av en UIColor Script 798 00:42:40,820 --> 00:42:42,020 å kalle metoden på det. 799 00:42:42,020 --> 00:42:45,050 Jeg bare, rett og slett, heter det av type-lignende navn. 800 00:42:45,050 --> 00:42:49,620 Jeg, som, heter det på int, hvis int hadde, som, en fremgangsmåte til det, f.eks. 801 00:42:49,620 --> 00:42:52,380 >> Og så, hvis vi kjøre denne koden, vil vi Legg merke til at bakgrunnen 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 fortsatt hvit. 804 00:42:54,790 --> 00:42:57,720 805 00:42:57,720 --> 00:43:04,550 Og hvordan vi kan komme rundt dette er, legge merke til hvordan det er self.window. 806 00:43:04,550 --> 00:43:08,260 Det vil si, i likhet med, den endelige beholderen for din søknad. 807 00:43:08,260 --> 00:43:11,630 Det er den ultimate ting som inneholder alt på skjermen, for en 808 00:43:11,630 --> 00:43:13,650 iPhone eller iPad applikasjon. 809 00:43:13,650 --> 00:43:20,970 >> Og, beleilig, self.window har denne egenskapen som kalles 810 00:43:20,970 --> 00:43:22,650 rootViewController. 811 00:43:22,650 --> 00:43:26,480 Og det kommer til å være pekeren til den aller første visningen kontrolleren inne 812 00:43:26,480 --> 00:43:27,270 av programmet ditt. 813 00:43:27,270 --> 00:43:32,000 Så, hva vi ønsker å gjøre her, nå, er å sette det lik vår navigasjon 814 00:43:32,000 --> 00:43:32,710 kontrolleren. 815 00:43:32,710 --> 00:43:33,760 Høyre? 816 00:43:33,760 --> 00:43:37,490 Fordi, teknisk, navigasjon kontrolleren er vår aller første visning 817 00:43:37,490 --> 00:43:38,770 kontrolleren. 818 00:43:38,770 --> 00:43:46,160 Den holder styr på en rekke andre visning kontrollere, og vi presset dette 819 00:43:46,160 --> 00:43:49,810 view kontrolleren i denne matrisen i navigasjonskontrolleren. 820 00:43:49,810 --> 00:43:52,640 >> Så, om du ikke ønsker å gjøre dette. 821 00:43:52,640 --> 00:43:54,225 Det ville egentlig ikke hjelpe deg. 822 00:43:54,225 --> 00:43:58,040 Du ønsker å gjøre dette, hvis du ønsket å gjøre en navigeringskontroller, som de fleste 823 00:43:58,040 --> 00:44:01,100 av dere sikkert vil fordi vil du ønsker å, liksom, har noen form for, 824 00:44:01,100 --> 00:44:04,840 lignende, menyen for å gå tilbake til eller noen hjemmesiden for å gå tilbake til, snarere enn en 825 00:44:04,840 --> 00:44:05,470 tom skjerm. 826 00:44:05,470 --> 00:44:05,920 Ja? 827 00:44:05,920 --> 00:44:11,460 >> PUBLIKUM: Er det ubehagelig for deg å zoome inn på - 828 00:44:11,460 --> 00:44:12,710 >> RHED SHI: Yeah. 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 Dette er koden, og nu la oss teste det ut. 832 00:44:22,370 --> 00:44:27,920 >> Så, det vi går. 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 Takk. 837 00:44:34,420 --> 00:44:35,000 OK. 838 00:44:35,000 --> 00:44:38,690 Så nå, hva vi ønsker å gjøre er - så, vi er litt begrenset, her, ikke sant? 839 00:44:38,690 --> 00:44:45,130 Vi kunne potensielt skrive alt innsiden av denne funksjonen. 840 00:44:45,130 --> 00:44:48,470 Men, det er ikke hvordan iOS utvikling vanligvis arbeider. 841 00:44:48,470 --> 00:44:53,030 >> Så, hva vi skal gjøre er, vi er kommer til å lage noen nye filer. 842 00:44:53,030 --> 00:44:57,110 Men, mer spesifikt, skal vi opprette en annen Objective-C-klasse, eller 843 00:44:57,110 --> 00:44:58,010 et annet objekt - 844 00:44:58,010 --> 00:45:00,700 klasse og gjenstander er utskiftbare her. 845 00:45:00,700 --> 00:45:06,460 Og, her er hvordan jeg kunne, potensielt, opprette en annen klasse av U-kontrollere. 846 00:45:06,460 --> 00:45:12,030 >> Så, det er en sub-klasse, som du vil legge merke til, her, det er en underklasse av den 847 00:45:12,030 --> 00:45:15,910 UI vise kontrolleren, men jeg kan kaller det noe annet navn her. 848 00:45:15,910 --> 00:45:19,400 Jeg kunne kalle dette CS50, kunne jeg ringe dette synet kontrolleren, jeg kunne ringe 849 00:45:19,400 --> 00:45:21,640 dette blah vise kontrolleren - 850 00:45:21,640 --> 00:45:22,400 hva jeg vil. 851 00:45:22,400 --> 00:45:24,140 Dette er bare navnet på klassen. 852 00:45:24,140 --> 00:45:27,020 Men, det kommer til å være viktig fordi, i hovedsak, hva jeg gjør 853 00:45:27,020 --> 00:45:29,720 her er, jeg skaper en annen klasse navn. 854 00:45:29,720 --> 00:45:34,140 Så, det kommer til å være, som noen slags type eller en gjenstand. 855 00:45:34,140 --> 00:45:35,910 Så bør det være litt generisk. 856 00:45:35,910 --> 00:45:37,225 Det kommer ikke til å være veldig konkret. 857 00:45:37,225 --> 00:45:40,410 858 00:45:40,410 --> 00:45:44,480 >> Og også, jeg ønsker å påpeke ut disse to alternativene. 859 00:45:44,480 --> 00:45:48,430 Fordi vi gjør alt innsiden av kode, noen ganger er det mye enklere 860 00:45:48,430 --> 00:45:53,540 å bringe inn et grensesnitt-fil, slik at Jeg kan bokstavelig talt dra 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 vet, en etikett, eller en knapp, eller noe annet. 863 00:45:57,810 --> 00:46:01,950 Og så, xibs er filer som lar deg gjør det, og du må koble den opp 864 00:46:01,950 --> 00:46:04,310 på denne vis kontroller fil. 865 00:46:04,310 --> 00:46:06,540 >> Så, jeg kommer til å bevisst ikke sjekke dette. 866 00:46:06,540 --> 00:46:12,510 Vanligvis ville jeg sjekke dette, og hvis jeg bare gjorde dette for iPhone eller iPad, jeg 867 00:46:12,510 --> 00:46:16,340 ville sjekke dette og bare har én for, du vet, iPhone eller iPad. 868 00:46:16,340 --> 00:46:19,750 Men siden jeg gjør universell, jeg kommer å lage to av dem senere. 869 00:46:19,750 --> 00:46:22,220 Så, jeg kommer til å bevisst deaktiverer du dette. 870 00:46:22,220 --> 00:46:23,940 >> Dette er også svært viktig. 871 00:46:23,940 --> 00:46:27,490 Mange ganger har jeg hatt bugs hvor dette ikke ble sjekket. 872 00:46:27,490 --> 00:46:31,930 Og så, selvsagt, er denne filen ikke, liksom, som inkluderte eller importerte 873 00:46:31,930 --> 00:46:33,740 innsiden av denne test mappen. 874 00:46:33,740 --> 00:46:38,180 Og så har min kode absolutt ingen anelse om eksistensen av denne filen, og 875 00:46:38,180 --> 00:46:41,080 som fører til mye smerte og timer med feilsøking. 876 00:46:41,080 --> 00:46:44,360 Men, bare sørg for at dette er sjekket så det, vet du, målet for denne 877 00:46:44,360 --> 00:46:47,510 filen er for dette programmet. 878 00:46:47,510 --> 00:46:48,310 >> OK. 879 00:46:48,310 --> 00:46:51,680 Så, nå har vi laget to nye filer. 880 00:46:51,680 --> 00:46:54,050 Og disse filene ser ganske tom. 881 00:46:54,050 --> 00:46:59,550 Og, faktisk, la oss også fortsette på ved å skape xib filer. 882 00:46:59,550 --> 00:47:03,690 Så, som tidligere, var jeg i Cocoa Touch drop-down. 883 00:47:03,690 --> 00:47:06,880 Nå kommer jeg til å gå inn i bruker Interface touch, og som du kan se, jeg 884 00:47:06,880 --> 00:47:08,120 kan lage et storyboard. 885 00:47:08,120 --> 00:47:11,710 >> Så, selv om jeg startet med en tom søknad, kan jeg fortsatt bruke en 886 00:47:11,710 --> 00:47:12,340 storyboard. 887 00:47:12,340 --> 00:47:15,480 Selv om det blir vanskelig når det gjelder av hvordan du vil koble 888 00:47:15,480 --> 00:47:16,820 som til koden din. 889 00:47:16,820 --> 00:47:18,230 Så, jeg vil ikke gå dit. 890 00:47:18,230 --> 00:47:22,160 >> Men, hva vi ønsker å gjøre nå er å lage en visning. 891 00:47:22,160 --> 00:47:25,720 Og du kan velge for en iPhone eller en iPad. 892 00:47:25,720 --> 00:47:30,180 Og vanligvis, for å betegne forskjell - hvis du gjør en 893 00:47:30,180 --> 00:47:31,950 universell bruk - 894 00:47:31,950 --> 00:47:35,980 du enten sette en understrekning iPhone, eller du kan gjøre en twiddly. 895 00:47:35,980 --> 00:47:36,980 Det spiller egentlig ingen rolle. 896 00:47:36,980 --> 00:47:40,890 Det er rett og slett for deg å skille hvilken visning er for hvilken enhet. 897 00:47:40,890 --> 00:47:43,470 898 00:47:43,470 --> 00:47:44,430 >> Og så, nå ser. 899 00:47:44,430 --> 00:47:47,550 Jeg har en skjerm som jeg kan jobbe med. 900 00:47:47,550 --> 00:47:53,530 Og så, for eksempel, jeg kan sette en merkelapp på her, vet du, og jeg kan også sette 901 00:47:53,530 --> 00:47:54,820 en annen knapp her. 902 00:47:54,820 --> 00:47:58,730 Jeg vil ikke bry endre verdiene her. 903 00:47:58,730 --> 00:48:09,050 >> Men, det som er viktig her er at filens eier - 904 00:48:09,050 --> 00:48:13,660 så, jeg er innsiden av iPhone visning, iPhone xib fil. 905 00:48:13,660 --> 00:48:18,050 Og ned i denne navigeringsområdet eller drop-down menyen, ønsker jeg å gå til 906 00:48:18,050 --> 00:48:19,090 filens eier. 907 00:48:19,090 --> 00:48:22,630 Og dette er virkelig viktig skritt her. 908 00:48:22,630 --> 00:48:27,780 Jeg ønsker å gjøre klassen visning kontrolleren, slik at denne xib fil 909 00:48:27,780 --> 00:48:30,030 kommer til å være forbundet med mitt syn kontrolleren. 910 00:48:30,030 --> 00:48:33,590 911 00:48:33,590 --> 00:48:39,360 Og noe som jeg gjør inne i mitt syn kontrolleren programma er 912 00:48:39,360 --> 00:48:42,800 kommer til å bli reflektert på her. 913 00:48:42,800 --> 00:48:46,270 >> Så imidlertid legge merke til at - 914 00:48:46,270 --> 00:48:55,995 faktisk, la oss gjøre dette synet blå bakgrunn, f.eks. 915 00:48:55,995 --> 00:49:00,280 916 00:49:00,280 --> 00:49:01,530 Eller grønn. 917 00:49:01,530 --> 00:49:03,870 918 00:49:03,870 --> 00:49:07,950 Og da, så hvis du vil legge merke til, tilbake i denne koden, er dette hvor vi fikk vår 919 00:49:07,950 --> 00:49:09,200 navigeringskontrolleren. 920 00:49:09,200 --> 00:49:12,650 921 00:49:12,650 --> 00:49:18,310 >> Selv om vi gjorde det skrittet, er det fortsatt kommer til å være rød, ikke grønn. 922 00:49:18,310 --> 00:49:20,350 Og det er en grunn hvorfor. 923 00:49:20,350 --> 00:49:28,090 Det er fordi, når vi inited vårt syn kontrolleren, her - 924 00:49:28,090 --> 00:49:30,010 Beklager, det er litt sprøtt - 925 00:49:30,010 --> 00:49:34,520 når vi inited vårt syn kontrolleren her, vi inited det av 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 Slik at vi ikke selv gjøre det med denne klassen. 929 00:49:40,560 --> 00:49:42,030 >> Så husk, dette er som en klasse nå. 930 00:49:42,030 --> 00:49:47,160 Det kan sees på som en type, bare som UIViewController er en type. 931 00:49:47,160 --> 00:49:51,080 Og for å bruke det, hva vi trenger å gjøre er å importere den - 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 autofills det for meg. 934 00:49:55,750 --> 00:49:56,570 Så, ViewController - 935 00:49:56,570 --> 00:50:02,070 og nå, her, jeg kan endre dette UIViewController til ViewController. 936 00:50:02,070 --> 00:50:05,050 Og nå, her, jeg kan endre dette til ViewController. 937 00:50:05,050 --> 00:50:07,790 938 00:50:07,790 --> 00:50:09,250 >> La oss kjøre dette igjen. 939 00:50:09,250 --> 00:50:16,970 940 00:50:16,970 --> 00:50:19,690 Det er fortsatt rød. 941 00:50:19,690 --> 00:50:23,370 Og grunnen til at det er fortsatt rødt er fordi - 942 00:50:23,370 --> 00:50:26,230 woah, hva skjedde der? 943 00:50:26,230 --> 00:50:31,500 Vi ønsket å knytte denne xib fil med utsikt kontrolleren. 944 00:50:31,500 --> 00:50:37,540 Men for å faktisk gjøre det, trenger vi å gå inn i dette. 945 00:50:37,540 --> 00:50:42,980 Og når vi gjør det init, ønsker vi å gjøre initWithNibName, og da ønsker vi å 946 00:50:42,980 --> 00:50:48,910 gjøre det på strengen View_iPhone, for eksempel. 947 00:50:48,910 --> 00:50:51,700 Du kan ignorere bunten her. 948 00:50:51,700 --> 00:50:54,965 >> Og dette kommer til å tillate oss til, faktisk - 949 00:50:54,965 --> 00:51:00,620 950 00:51:00,620 --> 00:51:02,160 uh oh, det er et problem. 951 00:51:02,160 --> 00:51:09,300 952 00:51:09,300 --> 00:51:09,980 Høyre. 953 00:51:09,980 --> 00:51:17,670 >> Og så, det er et problem fordi, i vårt syn xib fil, har vi en etikett og 954 00:51:17,670 --> 00:51:18,720 vi har en knapp. 955 00:51:18,720 --> 00:51:23,660 Men selv om vi har koblet disse to, det er ingenting inni 956 00:51:23,660 --> 00:51:27,440 ViewController.h eller ViewController.m som reflekterer de 957 00:51:27,440 --> 00:51:29,160 knapper eller de etiketter. 958 00:51:29,160 --> 00:51:32,425 Så må vi skrive de i så egenskapene til det vis-kontrolleren. 959 00:51:32,425 --> 00:51:35,290 960 00:51:35,290 --> 00:51:39,490 >> Så, er dette hvordan du deklarerer en eiendom. 961 00:51:39,490 --> 00:51:43,422 Det tar i, som regel, disse to alternativene. 962 00:51:43,422 --> 00:51:48,690 Ved anvendelsen av oss, og dette seminaret, Jeg vil si at, generelt, 963 00:51:48,690 --> 00:51:52,250 de fleste eiendommene er nonatomic og beholde. 964 00:51:52,250 --> 00:51:55,420 Du kan lese opp av Google søk, du vet, forskjellen mellom 965 00:51:55,420 --> 00:51:58,620 nonatomic og beholde den, du vet, Google eller noe. 966 00:51:58,620 --> 00:52:01,090 Og jeg skal ta deg til, som, Stack Overløp, der folk vil ha 967 00:52:01,090 --> 00:52:03,605 svar til forskjellene mellom disse. 968 00:52:03,605 --> 00:52:07,000 Men for nå, er at det vi ønsker å være opptatt av. 969 00:52:07,000 --> 00:52:12,790 >> Og vi ønsker å gjøre en UI etikett, stjerne, og vi kan kalle det hva vi vil. 970 00:52:12,790 --> 00:52:15,710 Vi kan kalle dette, du vet, etiketten. 971 00:52:15,710 --> 00:52:18,270 972 00:52:18,270 --> 00:52:20,110 Og, vil vi lage en annen en for knapp. 973 00:52:20,110 --> 00:52:24,380 974 00:52:24,380 --> 00:52:29,910 Og husk å ta med stjerne, fordi vi har å gjøre med pekere 975 00:52:29,910 --> 00:52:36,740 ganske mye overalt inne av Objective-C. 976 00:52:36,740 --> 00:52:42,110 >> Men det vil fortsatt ikke løse problemet, som du kan se her. 977 00:52:42,110 --> 00:52:50,540 Og grunnen er fordi, når vi ønsker å koble en xib fil etikett eller en 978 00:52:50,540 --> 00:52:55,690 knappen til programmet, eller header og gjennomføring fil, vi ønsker å 979 00:52:55,690 --> 00:52:58,255 legge denne kodebit - 980 00:52:58,255 --> 00:53:00,610 utløp. 981 00:53:00,610 --> 00:53:03,600 Legg merke til at det er et nøkkelord. 982 00:53:03,600 --> 00:53:07,970 >> Og så snart jeg er ferdig å skrive det ut, bør den ha disse 983 00:53:07,970 --> 00:53:09,100 to sirkler, her. 984 00:53:09,100 --> 00:53:11,200 Vanligvis, de er ikke fylt i. 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 vanligvis, må du manuelt koble dem ved å gå til denne siden av 987 00:53:21,370 --> 00:53:23,530 verktøyområdet. 988 00:53:23,530 --> 00:53:28,430 >> Og så, akkurat nå, jeg har fått min etiketten valgt, og jeg ønsker å dra denne nye 989 00:53:28,430 --> 00:53:33,910 referering uttaket til min filens eier, og klikk deretter på Etikett. 990 00:53:33,910 --> 00:53:40,230 Så nå, endelig, er denne etiketten forbundet med denne etiketten. 991 00:53:40,230 --> 00:53:44,950 Og denne etiketten er hva vi kommer til å bruke programmatisk å endre sin 992 00:53:44,950 --> 00:53:49,250 tekst, sin skrift, dens bakgrunn farge, et cetera. 993 00:53:49,250 --> 00:53:52,430 >> Så, hvorfor kan ikke vi gjøre det samme for knappen? 994 00:53:52,430 --> 00:53:54,770 Og som du vil legge merke til, for på-knappen, det er litt mer komplisert. 995 00:53:54,770 --> 00:53:59,060 Fordi, jeg mener, du er ment å trykker på en knapp, så det har en mye 996 00:53:59,060 --> 00:54:02,950 alternativer for hvordan brukerne kan trykke på en knapp. 997 00:54:02,950 --> 00:54:06,570 Og så får vi se senere om at vi kan koble denne til vår 998 00:54:06,570 --> 00:54:09,140 kode for å gjøre det arbeidet. 999 00:54:09,140 --> 00:54:12,770 >> Så, for nå skjønt, vi ønsker å koble den til den aktuelle knapp 1000 00:54:12,770 --> 00:54:13,570 innsiden av koden vår. 1001 00:54:13,570 --> 00:54:19,640 Så vi går til den nye referering utløp, og gjør deretter knappen. 1002 00:54:19,640 --> 00:54:22,068 Nå, la oss kjøre dette igjen. 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 vet ikke hva som skjer her nå. 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 det ene øyeblikket, her. 1010 00:54:58,960 --> 00:55:02,490 >> Egentlig, hvorfor ikke vi ta en se på et annet eksempel i 1011 00:55:02,490 --> 00:55:05,800 interesse av tiden. 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 tatt egenskapene for 1016 00:55:17,110 --> 00:55:18,460 etiketten og knappen. 1017 00:55:18,460 --> 00:55:20,370 Og så, denne del av koden her - 1018 00:55:20,370 --> 00:55:21,830 dette IBaction - 1019 00:55:21,830 --> 00:55:27,740 var en forbindelse til denne knappen her. 1020 00:55:27,740 --> 00:55:33,940 Så som du kan se her, Touch Up Inside er koblet til velger 1021 00:55:33,940 --> 00:55:37,390 kalt knappen inne. 1022 00:55:37,390 --> 00:55:41,700 >> Så kan vi faktisk gå gjennom bevegelse igjen, her, ved å ta Touch Up 1023 00:55:41,700 --> 00:55:48,750 Inne og dra det til Filens eier, og deretter 1024 00:55:48,750 --> 00:55:51,570 Klikk på knappen inne. 1025 00:55:51,570 --> 00:55:52,820 Nå, la oss kjøre vår kode. 1026 00:55:52,820 --> 00:55:55,710 1027 00:55:55,710 --> 00:56:02,020 Så nå, på denne knappen nå fungerer og vil ta oss til neste side. 1028 00:56:02,020 --> 00:56:08,430 >> Og, når det gjelder vårt syn kontrolleren, Dette er stykke kode som tok 1029 00:56:08,430 --> 00:56:10,000 omsorg av knappen inne. 1030 00:56:10,000 --> 00:56:14,260 Og det er viktig å merke seg her, at Jeg har laget en annen type visning 1031 00:56:14,260 --> 00:56:16,330 regulatoren kalles en tabell view controller. 1032 00:56:16,330 --> 00:56:19,900 Så, dette var lik tilbake i storyboard, da jeg dro en av 1033 00:56:19,900 --> 00:56:23,450 disse tabell view kontrollere i dreieboken. 1034 00:56:23,450 --> 00:56:24,470 Jeg oppretter en annen 1035 00:56:24,470 --> 00:56:30,000 >> Peker til tabellvisningen kontrolleren, Alloc og init-ing det, og da gjør 1036 00:56:30,000 --> 00:56:34,490 selv dot navigeringskontrolleren, presse 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 satt animasjonen til ja, fordi nå inne i min app, og jeg 1039 00:56:39,750 --> 00:56:45,670 ønsker å faktisk se animasjonen kommer fra hjemmesiden 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 fortsatt bekymre om søppelrydding? 1043 00:56:51,110 --> 00:56:51,840 >> RHED SHI: Hva er det? 1044 00:56:51,840 --> 00:56:54,740 Nei. 1045 00:56:54,740 --> 00:56:58,970 Så, spørsmålet var, har du å jobbe med søppelrydding? 1046 00:56:58,970 --> 00:57:03,470 Så, Xcode 4 hadde som ARC, som er automatisk referansetelling. 1047 00:57:03,470 --> 00:57:06,120 Og så, vanligvis når du starter en ny prosjekt, vil du sjekke det, fordi 1048 00:57:06,120 --> 00:57:09,440 ingen egentlig ønsker å forholde seg til frigjøre minne og sånt. 1049 00:57:09,440 --> 00:57:13,720 Men jeg tror i Xcode 5, det er ikke engang at alternativet på det nye prosjektet. 1050 00:57:13,720 --> 00:57:16,750 Så, det automatisk gjør det for deg. 1051 00:57:16,750 --> 00:57:16,920 Ja? 1052 00:57:16,920 --> 00:57:20,970 >> PUBLIKUM: Kan du eksportere et PDF i dreieboken? 1053 00:57:20,970 --> 00:57:22,020 >> RHED SHI: Ja, definitivt. 1054 00:57:22,020 --> 00:57:28,180 Så, vil alle disse bli inkludert i kildekoden, slik at dere kan sjekke ut 1055 00:57:28,180 --> 00:57:30,730 selve Xcode prosjekt for det. 1056 00:57:30,730 --> 00:57:31,105 Yeah? 1057 00:57:31,105 --> 00:57:35,944 >> PUBLIKUM: Men, jeg mener, i likhet med, kan jeg skrive ut en PDF med min storyboard? 1058 00:57:35,944 --> 00:57:38,920 Hvis jeg bare ønsker å eksportere bilder for å vise noen. 1059 00:57:38,920 --> 00:57:39,160 >> RHED SHI: Oh yeah. 1060 00:57:39,160 --> 00:57:41,980 Jeg tror, ​​kanskje, du kan bare ta en skjermdump. 1061 00:57:41,980 --> 00:57:44,350 Ja, og sende dem en skjerm skudd eller noe. 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å, la oss se. 1065 00:57:50,570 --> 00:57:56,470 I interesse av tiden, tror jeg det er alt jeg kan dekke i dag. 1066 00:57:56,470 --> 00:57:59,600 Men, jeg vet at det er, faktisk, bare knapt berøre overflaten av iOS 1067 00:57:59,600 --> 00:58:00,370 utvikling. 1068 00:58:00,370 --> 00:58:05,630 Så, kan du gjerne kontakte meg hvis Har du spørsmål om iOS 1069 00:58:05,630 --> 00:58:07,000 utvikling. 1070 00:58:07,000 --> 00:58:12,840 Og forhåpentligvis vil jeg være i stand til å rense opp noen av koden for kilden 1071 00:58:12,840 --> 00:58:16,830 koden filer, slik at du vil ha noen virkelig fine eksempler å jobbe med. 1072 00:58:16,830 --> 00:58:21,020 >> Annet enn det, hvis dere går til CS50 Hackathon, kan jeg eller kan 1073 00:58:21,020 --> 00:58:25,730 ikke være der, og jeg kan hjelpe ut med noen iOS utvikling, også. 1074 00:58:25,730 --> 00:58:26,980 Så, tusen takk, folkens. 1075 00:58:26,980 --> 00:58:31,168