>> Rhed SHI: Bine ați venit la vezi seminar CS50 -
Introducere în iOS.
Vă mulțumesc tuturor că ați venit.
Sper că ești la fel de incantati ca eu sunt de iOS.
Anul trecut, am luat CS50 ca un al doilea de studentie, și am învățat practic iOS pentru meu
final al proiectului.
Și a fost destul de -
bine, nu a fost ușor, dar există o mulțime de tutoriale de asistență online.
Și eu chiar sper că cu această seminar, eu voi da voi un cap
începe la dezvoltarea iOS
>> Deci, în ceea ce privește dezvoltarea iOS, există două lucruri principale noi
Vreau pentru a acoperi astăzi.
În primul rând, limba -
limba va fi în Objective-C. Vom auzi de fapt
ceva cu adevarat interesant.
Deci, vă puteți alătura tot Apple, comunitate de dezvoltatori și de a construi unele
aplicații într-adevăr minunat.
>> De asemenea, iOS 7 este frumos, sperăm, pentru unii dintre voi.
Dar este controversat, știu.
Și, în principal, ceea ce vreau să fac este ghidul te prin Objective-C, și, de asemenea,
Xcode, care este integrat mediu de dezvoltare care va fi
care lucrează în pentru iOS.
>> Și astfel, doar un cuvânt pe Objective-C. Practic, este exact același ca și C,
dar cu o mulțime de alte lucruri.
Și astfel, mai strict, este de fapt o super-set de C. Deci, tot ceea ce ai
se poate face în C, chiar acum, care este ca practic PSET 0 la 6, te
se poate face în Objective-C.
>> Deci, nu se simt frică despre acest nou limbă pe care ai de gând să învețe.
Te-am acoperit deja o mulțime de ea, pentru că voi toți ați făcut C acest trecut
semestru, cu excepția acum te duci pentru a avea o mult mai mult pentru a lucra cu.
Și Mă duc să vă conducă, printr-o câteva exemple pentru a sublinia unele
de diferențele cheie pe care le-am găsit au fost când foarte important am învățat
Objective-C, anul trecut.
>> Ei bine, de fapt, așa, un alt punct este, Objective-C este, în mod evident,
orientat-obiect.
Și vom discuta un pic despre ceea ce înseamnă că mai târziu.
Practic, e ca și cum ai lucrat cu structs în acest PSET trecut, cu
noduri și alte similare lucruri de genul asta.
Cu excepția, în Objective-C, totul este un obiect, și vei fi
trecând în jurul valorii de indicii pentru a obiectelor mai degrabă decât valorile înșiși.
Deci, e doar ceva important de a păstra în minte.
>> Deci, de ce nu începem cu câteva diferențele de sintaxă între C și
Obiectiv-C?
Vreau să subliniez # include, te știu, io.h standard, în C și C + +, cu
versiunea Objective-C din care este # import, iar apoi un fel de
fișier antet.
În acest caz, ar fi UIKit, Știi, slash UIKit.h.
Ar putea fi, de asemenea, stii, MKMapview pentru a vă reduce MKMapview.h dacă doriți
de a face, cum ar fi, o hartă interiorul app dumneavoastră.
Lucruri similare, cum ar fi faptul că.
>> Deci, cel mai important lucru este să includă sa schimbat acum să importe.
Dar ideea rămâne.
Ai de gând să fie importul un fel de fișier header în programul tău.
>> De asemenea, vreau să subliniez diferența între printf și NSLog.
Cu toate acestea, așa cum am spus mai devreme, Objective-C este un super-set strict de
C, ceea ce înseamnă că există printf în Objective-C, de asemenea.
Dar, majoritatea oamenilor nu folosesc asta.
Cei mai mulți oameni folosesc acest NSLog deoarece vă oferă o ștampilă de timp, și vom vedea
l în acțiune mai târziu.
Dar, este, în general, o mai util modalitate de a imprima variabile.
>> Și eu, de asemenea, doresc să sublinieze că NSLog ia în la fel
Valorile substituent ca printf o face -
astfel% d este pentru un int, % F este un float.
Cu toate acestea, eu nu vreau să evidențieze acest lucru foarte ultima -
NSLog% la semn -
care este un substituent pentru un obiect.
Și, după cum am spus mai devreme, Objective-C oferte destul de mult cea mai mare parte din obiecte,
și astfel aceasta va veni în uz atunci când doresc să imprime, poate, poate o
NSArray, sau NSDictionary, sau un NSString.
>> Deci, de asemenea, observa că, în NSLog nostru afirmație, avem un la semn în față
citatului -
că este pentru a semnifica faptul că siruri de caractere, acum, în Objective-C sunt obiecte.
Ei nu mai sunt pur și simplu stele char.
Sunt obiecte și sunt tratată ca atare.
>> Deci, este foarte important ca, atunci când utilizați NSLog este nevoie într-o NS
șir, ceea ce înseamnă că veți avea să includă o puțin în fața ta
ghilimele.
Și de aceea vedeți, aici, în toate Funcția mea cheamă la acest NSLog, am
au o la în fața citate, chiar deși% d și% F sunt
toate la fel de la C.
>> Orice întrebări până acum?
Voi încerca să treacă prin acest rapid, astfel că putem avea mai mult timp la locul de muncă
cu Xcode și Objective-C, așa că voi putea obține mai mult
familiarizat cu ea.
>> Apoi, vreau să subliniez ceva conceptual de important.
Deci, în C, cele mai multe lucruri sunt funcții.
Facem un apel de funcție.
Noi declarăm funcții în acest fel, cu revenirea primul tip, atunci
nume de funcție, între paranteze, și apoi indiferent de argumente și de tipul de
aceste argumente ne-am dori să treacă inch
Și Objective-C, deoarece totul este un obiect sau o clasă -
atât de clasă și obiect sunt doi termeni care sunt în mare parte sinonim cu altele,
așa că am putea să le utilizați interschimbabil pe parcursul seminarului.
>> Dar, veți vedea că avem metode de Obiectiv-C și nu la funcții.
Și metode fac parte din obiecte.
Deci, doar ca, poate să ia de exemplu, nod -
tip nostru [inaudibil]
nod din PSET 6 sau 5 -
avem cuvântul, proprietatea, sau următorul nod indicatorul.
Metodele sunt pur și simplu funcții în interiorul de un fel de structură.
>> Deci, în acest caz, structura va fi obiect, apoi metoda este
ceva ce aparține unui obiect.
Și acest lucru este modul în care s-ar declara, un fel de, o metodă.
V-ar începe cu, din nou, revenirea tip - deci, am încercat să culoare
cod cuvintele cheie aici, pentru ca voi se poate vedea, cel puțin, formatarea
similarități între funcția Declaratii metodă.
Deci, începe cu, știți, o revenire tip - în acest caz, este o matrice, sau
un pointer NSArray -
și apoi ai această metodă.
Și atunci, ce e interesant aici este că, în loc de a avea paranteze, am
au aceste două puncte.
Și apoi, în fața argumentelor noastre, ne-am pus, din nou, în paranteze tipul
a argumentului nostru.
>> Deci, acum am încercat să facă comparație între, știi, n și
număr, pentru că sunt ambele int, cum ar fi.
Apoi, cealaltă este un tip NSUInteger.
Și apoi, cu Objective-C, atunci când doresc să aibă mai multe argumente în
clauza metoda, tu, un fel de, separa-le un fel de acest lucru -
Eu nu sunt destul de sigur cum să-l descrie, dar acest lucru este un bun exemplu de modul în care
poate avea mai multe argumente acolo.
>> Ai putea, desigur, doar în totalitate ignora de colon andArray NSArray
matrice dacă ai vrut doar o metodă care să ia într-un singur argument.
Da, întrebare.
>> Audiența: Sunt atât NSUInteger și NSArray argumente care pot fi luate în
în NSArray?
>> Rhed SHI: Da.
Deci, lasă-mă să explic.
Deci, da.
Deci, întrebarea a fost sunt NSUInteger și NSArray * tipuri de argumente,
și asta e corect.
Deci, vrei mereu să precizeze ce Tipul de argument este.
Și aici, eu încerc să vă prezint la o parte din sintaxa și Vocab de
Objective-C, astfel încât acestea sunt tipuri reale că veți fi de-a face cu.
>> Și, după cum veți observa, tablouri nu mai sunt, un fel de,
suport lucruri simple.
Sunt obiecte.
Deși, dacă mergem la următoarea diapozitiv, putem vedea că putem
tare-un cod NSArray în Objective-C cu pur și simplu un simbol la în fața
paranteze.
Eu nu sunt, de fapt, destul de sigur dacă I punct de vedere sintactic hard-coded o matrice
corect pentru versiunea C, dar asta e ar trebui să fie într-o gamă C.
>> Deci, acesta este modul în care ar fi, stii, poate folosi funcțiile sau
Metodele pe care le-am creat mai devreme.
Corect?
Deci, acest lucru este în cazul în care ne declarăm nostru funcția și metoda noastră.
Și acum vrem să le utilizeze în programul nostru, iar acest lucru este
cum ne-ar face-o.
Deci, în C, le-ar fi, știți, probabil, o bool b, și l-ați setat pentru a
egală funcția, și apoi treci în argumentele.
>> În Objective-C, este destul de cam același lucru.
Ai NSArray * my_array, și este mergi la egal - acum, singura
Diferența aici este acest lucru obiect, pe care le-am evidențiat în galben, și
după cum puteți vedea, în C, nu e nici un alt cuvânt galben.
Și pentru că metodele aparțin cu un anumit obiect.
Deci, de aceea am nevoie pentru a avea un obiect că, un fel de, solicită această metodă pe
numărul de zero, și apoi NSArray a, b, c, d.
Orice întrebări cu privire la asta?
>> Vom vedea aceste concepte în acțiune destul de curând, când vom merge într-un demo.
OK.
Acum, vreau să vorbesc un pic scurt despre Xcode 5, care este
mediu de dezvoltare integrat că veți fi de lucru cu.
Știu o mulțime de tine, sau unii dintre voi, nu au Mac-uri, care este o problemă
deoarece Xcode nu este disponibil pentru Windows și PC.
Nu mă întreba de ce, dar probabil -
Da, corporative.
Oricare ar fi.
Dar, oricum, așa că, îmi cer scuze dacă unele dintre tu nu trebuie să descărcați un fel de
mașină virtuală pentru Mac în Pentru a rula Xcode 5.
Dar aceasta este o destul de puturos software de utilizat.
>> Și așa, înainte de a se arunca cu capul în nici un fel de demo, vreau doar să-ți arăt un
imagine a ceea ce arata ca in Xcode dvs. fereastră, și apoi, de asemenea, vorbesc despre
ce acest spațiu este tot.
Deci, e un fel de a învăța cum să utilizați Microsoft Word, cu excepția pe care doriți să
să se familiarizeze cu toate lucruri diferite pe care
se întâmplă aici.
>> Deci, în primul rând, vreau să vă subliniez la bara de instrumente în partea de sus.
Veți vedea că, în partea de sus, veți avea numele de fișier -
sau, de fapt, numele dvs. de proiect și apoi numele fișierului.
Ia act de joc și butoanele de oprire.
Acestea sunt cele pe care le veți fi folosind pentru a rula aplicația pe
simulator -
simulator iOS.
Acest lucru vine în mod automat cu Xcode 5, astfel încât să nu trebuie să vă faceți griji cu privire la
descărcarea de un fel de simulator.
Trebuie doar apăsați butonul de redare și apoi se execută aplicația.
Și poți să te joci cu tine, și veți vedea cum funcționează mai târziu.
>> Apoi, în centrul, desigur, este în cazul în care toate de cod frumos este
de gând să meargă.
Și apoi, pe partea stângă, veți au aceasta, un fel de, dosar -
navigare -
și apoi, veți vedea, de asemenea, că, de-a lungul cu pictograma folder, există o
grămadă de alte icoane acolo, care vor fi utile mai târziu.
>> Și apoi, pe partea dreapta este un utilitar zonă în care se poate lucra cu
unele din obiectele și specifica, tu stiu, ce ar trebui să fie de culoare, ceea ce
font de text ar trebui să fie, et cetera.
Deși, tot ceea ce faci în zona de utilitate, puteți
face în cod, de asemenea.
Și așa, voi merge prin intermediul a două exemple de utilizare, pur și simplu, nici un cod de la
toate - sau cod foarte minim -
versete tot codul, doar pentru ca voi știi ce poate și ce nu se poate face în
Xcode și Objective-C.
>> Și apoi, în final, din partea de jos, aveți zona de depanare.
Deci, nu mai trebuie pentru a rula GDB, et cetera, pe programele.
O face în mod automat pentru tine.
Și puteți, de asemenea, să imprimați chestii de acest domeniu.
Deci, de fapt, mai târziu, vom merge prin mario.c, dacă voi mai aminti
că, în Xcode.
Astfel că ar trebui să fie distractiv.
>> Și apoi, doar să-l aducă înapoi la Objective-C, vreau să subliniez ceea ce
se poate face cu dacă declarațiile.
Deci, știți, pentru că Objective-C este un superset de C, tot ceea ce faci este,
literalmente, la fel ca și C. Doar au mici diferențe.
Deci, veți observa sub forma unei dacă afirmație este tot la fel - ai
în cazul în care, și atunci ai paranteze cu o condiție interiorul, ea și apoi
acolade pentru orice vrei să faci în interiorul de acolo.
>> Cu toate acestea, am vrut să pun acest slide-up aici, pur și simplu pentru a ilustra faptul că,
pentru că avem de-a face cu obiecte de acum, noi va trebui să folosească aceste lucruri
numit ca, este egal cu string, care este, coincidență, o metodă de a
șir sau un obiect NSString.
Deci, cuvântul, în acest caz, este un NSString obiect, si are o metoda numita este
egală cu șir, iar apoi vom trece într-un șir de hard-coded pentru a vedea
dacă acestea sunt egale unul cu altul.
>> Orice întrebări până acum?
OK.
Și, eu vreau să merg peste o declaratie de asemenea.
>> Deci, de exemplu, dacă am vrut să bucla pe lungimea unui șir în C, această
ar trebui să fie familiar pentru tine.
Și, în Objective-C, eu nu vreau pentru a sublinia acest lucru, un fel de,
metoda numita numărul.
Ei bine, de fapt, lasă-mă să ia doar că înapoi.
Numărătoarea este o metodă de matrice.
Cu toate acestea, este mai precis un proprietate de matrice, care este motivul pentru care
se poate utiliza notația punct.
Dar eu nu vreau să intru în prea mult de chestia asta conceptual, vreau doar
să-ți arăt cum ar arata lucrurile ca in Objective-C comparativ cu C.
>> Și, de asemenea, vreau să subliniez faptul că chiar dacă am fost folosind NSUInteger
în fața tuturor i lui mele în Objective-C, puteți utiliza, de asemenea, int, pentru că este int
total valabil în Objective-C, de asemenea.
Da?
>> Audiența: Este doar stilistică, sau este -
>> Rhed SHI: Da.
Deci, după cum veți vedea -
astfel, problema a fost că este doar o chestiune stilistică.
După cum veți vedea, am o, un fel de, stele lucru asterisc în jos în partea de jos, și
care link-ul te duce la un Stack Overflow formează, în cazul în care cineva explica
diferența dintre un int în NSInteger și un NSUInteger.
Și astfel, puteți citi despre asta mai târziu.
Aceste slide-uri vor fi, desigur, disponibile pentru tine.
>> Să vedem.
Bine, minunat.
Deci, acest lucru este de asemenea inclusă în diapozitiv pentru că am crezut că acest lucru a fost o mare
site-ul web pe care le introduce la Objective-C sintaxa.
Deci, de fapt, de ce nu ne-am muta la Chrome și a verifica afară acest site?
>> Corect.
Deci, ceea ce vreau să vă arăt baieti aici este această imagine.
Deci, aceasta este, un fel de, va fi ceea ce ai de gând pentru a vedea în interiorul de orice
Fișier Xcode.
De fapt, de ce nu ne ia doar o moment pentru a, un fel de, să ia această inch
>> Deci, această carte -
care este obiectul care avem de a face cu.
Și apoi, e, evident, va fi moștenit de la un alt obiect, dar
nu trebuie să vă faceți griji despre asta.
Și apoi, ea, poate, a unele variabile membre.
>> Cel mai important lucru pe care vreau să-ți arăt este metodele de exemplu, aici.
Deci, metodele de instanță sunt notate prin acest semn minus.
Și apoi, așa cum veți observa, suntem deja încep să vadă paradigma
pentru declarația metoda, nu?
Tipul de retur, numele metodei, și apoi tipul de argument, și
apoi numele argument.
Și acest semn minus înseamnă că este o Metoda exemplu, ceea ce înseamnă că
aceste metode sunt disponibile numai la obiecte care au fost instanțiate.
>> Pentru contrast care, metode, cu un plus semn în fața lor sunt de clasă
metode, ceea ce înseamnă că puteți apela aceste metode, chiar dacă nu aveți
un obiect creat încă.
Deci, de un exemplu clar, NSString este un clasa.
Și puteți apela, de exemplu, Metodele de clasa pe NSString -
real, cum ar fi, cuvânt NSString.
>> Cu toate acestea, în scopul de a utiliza aceste metode, de fapt,
au nevoie pentru a crea un șir.
De exemplu, șir stele NSString egal în ghilimele, salut lume.
Și apoi, puteți folosi aceste metode -
Metode de exemplu -
pe care șir hello world.
Deci, care este diferența dintre Metode de instanță și metode de clasă.
>> Si, ne-am acoperit doar această parte.
Proprietăți sunt un alt lucru, care sunt în interiorul obiectelor, practic.
Și le declara cu la cheie de proprietate.
Aveți aceste opțiuni, aici, pe care o voi explica mai târziu, când
vom merge într-un demo.
Da?
Hi.
>> Audiența: Ai putea mări, te rog?
>> Rhed SHI: Oh, da.
Scuze.
>> Audiența: Mulțumesc.
>> Rhed SHI: Asta ar trebui să fie mult mai bine.
>> Audienta: Da.
Mulțumesc.
>> Rhed SHI: Da, vă rog să îmi amintesc dacă Am uitat pentru a mări sau micșora.
Deci, asta e tot ce am vrut să-ți arăt de -
Uau, asta e mult -
pentru acest site.
Deci, să ne întoarcem la slide-uri noastre.
>> De fapt, acum haideți să o clipă să se scufunde într-un demo.
Deci, vom începe cu o nou proiect Xcode.
Deci, dacă veți deschide Xcode pe toate utilajele dumneavoastra, ar trebui să vă ia ceva
pagină în care se spune, ca, fie deschis la un proiect existent sau un nou
proiect, și ar trebui să faceți clic pe un nou proiect.
Și apoi, ar trebui să ia te la acest ecran.
Da?
>> Audiența: Dacă nu avem un Mac, avem doar un fel de calmezi?
>> Rhed SHI: Sau uite pe cu cineva, da.
Da.
Vă puteți relaxa, de asemenea.
OK.
>> Deci, ceea ce am de gând să facă în primul rând, acum, este, de fapt, vom face o
singură cerere vedere.
Deci, dacă veți observa, ceea ce e minunat despre sprijinul Apple pentru Xcode și
dezvoltatori este că aveți o mulțime de template-uri pentru a lucra cu deja.
Ai putea, de exemplu, face, o aplicare master-detaliu.
Puteți face un joc -
și, de fapt, eu nu voi intra în jocuri, pentru că jocurile sunt o altă poveste
pentru dezvoltare iOS.
Și ei un fel de separat, asa ca nu va merge în care.
>> Apoi, v-ați bazat pe pagina aplicații.
Aveți o aplicație tab -
astfel ca, de exemplu, Bank of America probabil, are, ca, un app cu file.
Sunt cei care aveți butoanele de la partea de jos.
Și apoi, ai un kit de joc Sprite.
>> Sau se poate lucra de la zero, care este ceea ce vom face mai târziu.
Dar hai, în primul rând, începe cu o singură cerere vedere.
Apoi, se va cere un nume de produs, și putem face doar de test.
Numele organizației -
astfel, numele organizației, Compania de identificare -
acestea sunt importante, dacă ai de gând pentru a pune app pe App Store.
Altele decât că, codul se va rula absolut în regulă, fără acest lucru.
>> Acest lucru va fi important dacă vrei - deci, în sine, cum ar fi, pune aplicația
pe dvs. de telefon sau ceva, și de testare l, știți, în viața reală -
acest lucru va fi important.
Acest lucru tinde să fie, de obicei, asociate cu un fel de cont de dezvoltator
cu Apple.
>> Și așa, eu știu, probabil, o mulțime de tine nu va avea nici conturi de dezvoltator.
Știu că universitatea are unul.
Cred că CS are unul.
Dar, puteți să-mi e-mail și voi încerca pentru a seama de asta pentru tine.
Dar acum, am pus doar în unele lucruri substituent aici.
>> Și puteți, desigur, aici, alegeți dacă doriți să fie exclusiv în
iPhone, în iPad, sau ambele -
aplicație universală.
Deci, de acum, să facem universal, doar pentru a vedea ambele părți ale platformei.
>> Să vedem.
Deci, chiar acum, am de gând să salveze se într-un fel de dosar.
Nu conteaza unde - ai puteți muta întotdeauna mai târziu.
Și, acum, suntem aduși pentru proiectul nostru Xcode.
Nu mi-aș face griji despre toate astea.
Aș sugera nu atinge nici de acest lucru, dacă nu știi exact ce
ce faci.
Deci, toate acestea, doar ignora cea mai mare parte.
Nu va fi nevoie să-l atingă, și dacă te pui niște lucruri aici,
devine un pic complicat.
>> Deci, de ce nu ne uităm în fișierele de pe
partea stângă în navigatorul nostru.
Aici, avem AppDelegate.h.
Avem AppDelegate.m Deci, cum veți preaviz, am antet fișiere, care
se încheie în dot h, și ne-am punere în aplicare -
de fapt, lasă-mă să zoom inch
OK.
Lasă-mă să zoom inch
>> Corect, așa că le-ați antet fișiere și aveți fișiere de implementare.
De fapt -
OK.
Acesta este un pic ciudat, dar să poarte cu mine.
Apoi, pentru că ne-am ales un singur punct de vedere cerere, vom fi
de lucru cu storyboard.
>> Deci, storyboard este ceva ca Apple a venit cu pentru a ajuta cu adevărat
dezvoltatorii prototip rapid aplicațiile lor.
Deci, acest lucru este în cazul în care puteți crea o aplicație fără a scrie o
o singură linie de cod.
Cu toate acestea, în nostru singură vedere cerere, facem, desigur, au un
fișier pentru punctul nostru de vedere, care este un controler vedere.
Deci, avem antet și fișier de punere în aplicare, aici.
>> Și, am de gând pentru a micșora acum, deoarece vom avea nevoie pentru a lucra în rezumat.
Deci, aici e punctul nostru de vedere.
Dacă ne-am, pur și simplu, rulați aplicația chiar acum, nu e prea interesant se întâmplă.
Deci, veți vedea acest ecran alb.
OK?
>> Și, în zona noastră utilități, putem adăuga o grămadă de lucruri diferite pentru a-l.
Deci, atunci când ai de a face cu ecrane în iOS, vedere controlorii sunt
obiecte care încapsulează, un fel de, opiniile dumneavoastră.
Deci, un controler vedere întotdeauna are o proprietate numita vedere.
Și acest punct de vedere, de obicei, conține, stii, ceea ce
Vreau să văd pe un ecran.
>> Deci, ei bine, hai să începem prin a pune, poate, poate o etichetă.
Deci, să punem o etichetă pe acolo -
stick-l la mijloc.
Deci, acum că am făcut clic pe eticheta, am poate merge în inspectorul de proprietăți
și începe să schimbe valoarea sa.
Să-l numim CS50 Culori.
>> Și, eu pot schimba, de asemenea, fontul.
Astfel, în loc de sistem, care este a face implicit, putem face un obicei.
Ne poate schimba -
știți, UltraLight, face 32.
Și apoi, ne putem face cutia noastră mai mare.
>> Audiența: Credeți că puteți mări în doar un pic mai mult, poate?
>> Rhed SHI: Da?
OK.
>> Audiența: Doar atingeți?
>> Rhed SHI: Să vedem.
Face acest lucru?
>> Audiența: trece Doar Xcode?
>> Rhed SHI: Sigur.
OK.
Minunat.
>> Audiența: Eticheta sub?
Eticheta?
>> Rhed SHI: Ce-i asta?
>> Audiența: Ce drop-down a fost sub eticheta?
>> Rhed SHI: Deci, întrebarea a fost, ceea ce drop-down a fost sub eticheta?
Acesta ar trebui, pur și simplu, fie sub aici.
Cred că e un lucru cub.
Dar, de obicei, acest lucru este implicit -
Mă duc jos aici până când am găsi o etichetă.
Da.
>> Deci, acum, ne-am eticheta nostru.
Să-l centru.
Xcode și ne dă instrucțiuni pentru obiecte de centrare.
Deci, acum să executați din nou codul nostru.
>> Acolo mergem.
Deci, ne-am CS50 Culori.
Și acum, hai să punem un buton pe acolo, nu?
Pentru că vrem să facem această interactiv.
Deci, hai să punem un buton aici.
Și vom numi acest buton "robinet aici pentru a continua. "Vom centru, de asemenea,
De fapt, este deja centrat.
Da.
>> Deci, acum avem un buton.
Și dacă vom rula din nou, vom pentru a avea un buton de drăguț aici.
Și eu pot faceți clic pe el, dar nu se face nimic, pentru că nu am făcut
ceva cu butonul încă.
>> Deci, haideți să creeze un alt punct de vedere, nu?
Deci, să spunem că vreau să atingeți care buton și vreau să
du-te la o altă pagină -
un alt punct de vedere.
Ceea ce am de gând să faceți este, eu pot crea un controler de vedere, corect?
Acum voi faceți clic pe butonul meu, și apoi, cel mai important lucru este, am de gând să
faceți clic pe - sau -
da, de control apăsați pe tastatura mea.
Control.
Faceți clic pe butonul, și apoi trageți.
>> Deci, nu uitați să țineți apăsată tasta de control.
Hai să facem asta din nou.
Deci, ține de control, faceți clic și trageți pentru ceea ce vrei sa faci.
OK.
>> Și acum, am mai multe opțiuni aici.
Pot fie împinge, sau pot face o modal, sau pot face un obicei.
Push este numai în cazul în care aveți un controler de navigare.
Chiar acum, primul nostru de vedere controler nu este în interiorul de orice
controler de navigare.
Deci, controlerul de navigare este cea care vă oferă pe butonul înapoi pe
app iOS cazul în care aveți, știți, că partea de sus, un fel de, bar gros -
unde poti sa te duci înapoi, sau înainte, et cetera.
Chiar acum, nu am asta.
Și astfel, de aceea eu nu pot face o împinge.
>> Deci, am făcut clic pe împinge accidental, aici.
Și, de fapt, să executați codul, și ar trebui să accident de pe mine.
Numai dacă apăs butonul deși, așa -
dreapta.
Deci, acest lucru este rău.
>> Și, după cum puteți vedea, aici, ne-am au mesajul de eroare.
Deci, "segues Push poate fi utilizat numai atunci când controler sursă este gestionat de către o
exemplu de controlor de navigare UI. " Deci, pentru că aceasta nu a fost în interiorul unei
controler de navigare, Nu am putut face asta.
>> Deci, chiar acum, mă duc înapoi la folder, merge înapoi la storyboard.
>> Audiența: Ce este navigarea controler, din nou?
>> Rhed SHI: Deci, acum vă voi arăta.
Să vedem.
Deci, am de gând să faceți clic pe acest punct de vedere controlor, și apoi am de gând să merg
până la produs -
de fapt, nu, îmi pare rău - editor.
Și am de gând să merg în -
De fapt, am faceți clic pe ea?
Nu.
Acolo mergem.
Am de gând să meargă în sus, în editor, du-te în jos de a încorpora în, și apoi de navigare
controler.
>> OK.
Și, spațiul de lucru meu arata foarte murdar, asa ca hai sa curat asta.
Deci, toate acestea sunt storyboard.
Și în acest fel -
OK, nu mai -
Eu pot construi rapid ceva ca aceasta.
Și apoi, acum pot merge înapoi, știi?
>> Dar aceasta este un fel de plictisitor, nu?
Deci, ceea ce vreau să fac este, nu vreau pentru a face, pur și simplu, o vedere
controler.
Să spunem că am vrut să fac de fapt o vizualizare tabel de control, așa că am putea pune în
unele culori frumoase, în masă.
>> Deci, acum că m-am pus în opinia mea masă controler, am nevoie să-l conectați din nou
din acest buton pentru a vedere controler.
Așa că am nevoie de a face controlul meu, clic, lucru trage din nou.
Și acum pot să fac împinge, pentru că am încorporați în interiorul unui controler de navigare.
>> Audiența: controler de navigare doar vă permite să meargă din loc în loc?
>> Rhed SHI: Da.
Deci, mai multe punct de vedere tehnic, este un obiect în care -
astfel, în interiorul de navigare obiect controler, ea
ține evidența de o matrice.
Și că matrice deține tot ulterioare vizualiza controlere.
De aceea, atunci când apăsați din nou, ea merge înapoi la pagina anterioară.
Deoarece sistemul de control de navigare obiect, sau codul de care are grijă de
acest obiect, are o serie pe care o păstrează urmări aceste controlere vedere, și
poate atunci, știți, DQ punctul de vedere controler și vă va oferi înapoi
unul anterior.
>> Deci, aceasta este de chestii tehnice, dar -
și vă voi arăta mai târziu în cod, dacă avem timp.
Sunt un fel de a rula pe timp, dar -
>> Deci, cu scopul de masă, ceea ce putem face este -
Este, de obicei, setat automat a dinamic Prototype -
am de gând să-l Celule statice face, altfel vom
rula în unele probleme.
>> Și apoi, să spunem că am de gând pentru a avea o secțiune.
Deci, secțiuni este ca -
dacă le-ați văzut vreodată app muzică, atunci când aveți artiști, secțiuni ar fi
fie o prin Z's -
scrisorile -
și apoi, știți, individul rânduri ar fi numele de artist.
Și astfel, ceea ce e bine aici, este că eu pot accesa toate din interiorul obiectelor
de storyboard mea prin acest drop-down meniu, de asemenea.
>> Deci, am de gând să faceți clic pe sectiunea mea, si eu vreau, stii, poate cinci rânduri.
Și apoi, în interiorul fiecărui rând, Vreau să pun o etichetă.
Și am de gând pentru a apela acest albastru.
Și apoi, vreau să pun o vedere UI, te stiu, poate pentru, ca, o cutie mica.
>> Astfel încât să pot arăta oamenilor o previzualizare a culorii.
Și Mă voi întoarce la proprietate și schimba culoarea la, oh, eu nu fac
Știu, asta.
>> Și apoi, observa, de asemenea, aici, când am accesoriile, pot avea o mulțime
dintre diferitele accesorii pe care le vezi de obicei.
Indicatorul de divulgare, detaliile, sau verifica marca, sau pur și simplu doar detalii.
Deci, poate că putem face, cum ar fi, o dezvăluire indicator, de exemplu.
>> Și apoi, de ce nu am lua aceste, copie lipiți-le, și le-a pus în
masă următorul rând.
Deci, putem apela acest galben.
Și am putea avea de a extinde acest lucru.
Să fac galben.
Și în acest fel, putem copia lipiți drumul nostru în jos.
Ce a fost?
Purpuriu.
>> Deci, acestea sunt toate CS50 tipic Culorile pe care le-ați văzut în clasă -
de fapt, îmi pare rău -
sau pe site-ul web.
Să sperăm că voi puteți vedea ceea ce fac aici.
OK.
Ultima.
>> Audiența: Cum ai adăuga rândul inițial?
>> Rhed SHI: Deci, întrebarea a fost, cum am adăuga rândul inițial?
M-am dus în această secțiune tabel - sau toate acestea pot
selectați secțiunea de masa -
și apoi, aici, am actualizat numărul de rânduri.
>> Și, permiteți-mi să sperăm că acest lucru funcționează.
OK.
Să vedem dacă merge.
Oh, perfect, minunat.
OK.
În timp ce am fost construirea demo-ul meu, unele lucrurile nu s-au aliniat, astfel, multumesc pentru
aplauzele.
>> Da.
Deci, să vedem.
Vom face acest lucru doar pentru a face nouă totul - sau, de fapt, hai să
rândul său, toate acestea în divulgare indicatori.
Și apoi, ce vreau să vă arăt, de asemenea, a fost cum pot lua fiecare dintre cei
rânduri de masă și le-au interacționeze -
oh.
Nu.
>> Oh.
De asemenea, vreau să vă arăt -
aici, eu pot pune titlul meu controler de navigare, corect?
Deci, de fapt, veți observa, de îndată ce am încorporat acest punct de vedere controler de interior
a controlerului de navigare, vom vedea aceasta bara de navigare în partea de sus a noastră
reprezentare storyboard de un controler de vedere.
Și astfel, acest lucru ne dă, ca, vizual, un fel de, ghid de ecran nostru vizibil.
Acest lucru este, evident, va fi bara de navigare.
>> Și ceea ce vreau să fac mai repede, acum, se pune într-un alt -
astfel încât acest punct de vedere tabel controler am făcut de a lua una dintre acestea și trăgând-o
aici, și asta e ceea ce mi-a permis să rapid, într-adevăr, de a crea o vizualizare tabel
controler.
Dacă avem timp, deși, veți a se vedea că, programatic, e un
pic mai dificil de a crea un tabel vedere controler, pentru că nu există
o serie de metode care sunt necesar pentru tine de a, un fel de, scrie
în ordine pentru vizualizarea de masă controler pentru a fi afișate corect.
>> Cu toate acestea, vreau doar să vă arăt, acum, un exemplu de unde, dacă iau acest lucru,
de exemplu -
I-am pus într-un alt vedere controler.
Și acum, să zicem vreau să controleze Alt prima mea albastru
rând masa de aici.
Și vreau să numesc acest albastru.
Și apoi -
Să vedem.
Sunt la vedere acum, și eu pot schimba fundalul la albastru.
>> Și astfel, notificare, aici, acest drop-down meniu, de asemenea, vă oferă o ierarhie a tuturor
de aceste obiecte.
Deci, un lucru important de reținut, aici, este că toate aceste lucruri, aici -
acest punct de vedere tabel de control, masa vedere, vizualizare tabel secțiune, vizualizare tabel
celulelor - toate acestea sunt obiecte, în cod.
Deci, știți, o etichetă chiar acum este în curs de vizualizarea de conținut, etc.
Așa mai departe și așa mai departe.
>> Deci, dacă vom rula acest cod, ne-am Ar trebui să vedeți ceva -
să vedem dacă asta - da.
Deci, aici vom merge.
Dar, dacă nu facem asta, nici unul de aceste lucruri de lucru.
Corect?
Deci, funcționează doar pe asta.
Și, de dragul de timp, nu voi du-te în, știi, punerea
în jos pe celelalte.
Și acest lucru este sfârșitul, un fel de, storyboard -
ceea ce am vrut să arăt te pentru storyboard.
>> Și, eu nu am un exemplu lucrat, de fapt, chiar aici.
Deci, acesta este rezumat pe care am făcut anterior.
Deci, după cum puteți vedea, aceasta a fost controlor meu de navigare.
Apoi am avut primul meu de vedere controler, apoi am avut meu de vedere de masă de control,
și apoi am avut toate acestea -
deci anterior, am făcut ceva foarte diferit.
Deci, scuză aceste lucruri.
Probabil voi curăța mai târziu, înainte de L-am trimit la producție.
>> Dar, dacă vom rula aceasta, vom vedea că toate opțiunile sunt
disponibile pentru noi.
Doar că nu a făcut fundaluri aceste culori.
Deci, cererea frumos simplu.
>> Acum, haideți să încercăm să abordeze acest programatic.
OK.
Deci, pentru a face acest lucru, vom doar de gând pentru a începe un nou proiect Xcode.
Vom face o cerere gol face acum, pentru că nu vrem să aibă
storyboard.
Deci, eu sunt pur și simplu limitarea mine pentru a nu utiliza oricare din storyboard, și o
aplicare gol nu va da-mi un storyboard.
Acest lucru este doar pentru a preveni eu de la inselat.
Să vedem.
Așteaptă.
Am făcut -
Da.
OK.
>> Corect.
Deci, aici, am rămas cu nimic altceva decât cod.
Deci, lasă-mă să mute această fereastră puțin peste.
Corect.
După cum puteți vedea aici, numai fișierele suntem dat sunt AppDelegate.h și punct
m, iar noi nu avem mai storyboard.
>> Deci, dacă vom rula aceasta, suntem încă de gând să ajunge la ecranul alb, mulțumesc lui Dumnezeu.
OK - ecran alb, dar nimic altceva.
Și, aici este partea importantă.
Acest lucru este în cazul în care se întâmplă acțiunea.
În versiunile anterioare, nu există de obicei, nici un cod de aici, dar
storyboard prevede, în esență codul pentru această parte.
Nu voi intra în detalii cu privire la modul.
>> Și ceea ce vrem să facem acum este, ne-o dorim pentru a merge în aici, iar acest spațiu mic
începe crearea din nou aplicația noastră.
Așa -
da?
>> Audiența: Zoom?
>> Rhed SHI: Zoom.
Da, sigur.
OK.
Voi fi tastarea, astfel încât aceasta nu ar trebui să contează prea mult.
OK.
>> Deci, în primul rând, amintiți-vă am vrut să creăm un controler de navigare, corect?
Și, de asemenea, după cum puteți vedea aici, Xcode face o treabă foarte mare de
auto-umplere.
Deci, după cum veți observa, numele tot ceea ce este mult mai mult decât
de obicei, dar Xcode se umple pentru tine.
Deci, eu pot doar să apăsați Enter.
>> Deci, vreau să creeze o navigare UI controler pointer, și pot să-l numesc
navigationController.
Acum, ce fac acum?
După acest semn egal, am nevoie pentru a, în primul rând, a crea în interiorul de memorie.
Deci, am de gând să fac NavigationController alloc -
deci, acest lucru este similar cu malloc, că voi folosite în C -
și apoi, am de gând să-l init.
>> Deci, este foarte important ca orice obiect pe care le creați, pe care doriți să
alloc și init-l.
Asta o să-l creeze și instantialize în interiorul de memorie, și
acum îl puteți folosi.
În regulă?
Dacă nu faci asta, obiect dumneavoastră nu nu exista, și veți rula într-un buchet
de probleme.
>> Și apoi, vreau să creați un controler de vedere, corect?
Deci, vreau să creați un UIViewController stele -
astfel, tot ceea ce este un indicator în Objective-C, și am de gând să fac
ceva asemănător, aici -
Alloc, init.
OK.
>> Și atunci ce am de gând să faceți este, eu sunt O să - așa, amintiți-vă, atunci când am făcut
embed în controler de navigare?
Acesta este modul în care o faci in cod.
Ai de gând să faci navigationController
pushViewController -
>> Audiența: [inaudibil].
Se va întâmpla acest lucru pentru noi, sau -?
>> Rhed SHI: Oh, da.
Nu.
Ea mă place mai bine.
Nu, acesta va lucra pentru tine, de asemenea.
Deci, acestea sunt toate metodele.
Deci pushViewController este o metodă, și de asemenea, mai precis, este un
exemplu metoda de UI controler de navigare.
Pentru că am avut de a crea navigare mea UI stele controler, și apoi am
pot apela acest pushViewController pe meu exemplu specific de o navigare UI
controler.
>> Audiența: Nu trebuie să facem exact cuvânt, sau nu mai există deja pentru ea?
>> Rhed SHI: Da, pentru că este o metodă.
E ca o funcție.
E ca printf.
E ca scanf.
E ca strcompare.
Doar că nu știe ce ar putea să doriți să tip, și observați că-l voi mereu
veni cu lucruri care sunt permis din punct de vedere pentru tine.
Deci, în cazul în care nimic nu apare aici, atunci ceva este greșit.
>> Deci, pushViewController.
Deci, acum, vreau să împingă meu nou creat
UIViewController, și apoi, animate -
poate că nu.
Deoarece acest lucru va fi la prima vedere controler.
Vreau să spun, chiar dacă am făcut animat, probabil că nu va apărea, pentru că
este primul ecran.
>> Și amintiți-vă paranteze.
Deci, amintiți-vă cum am folosit paranteze?
Și în interiorul paranteze, obiect solicită o metodă -
deci obiectivul nostru este de navigare controler, iar metoda este un impuls
vedere controler animat.
Și a vedea cum este nevoie în două argumente, și acestea sunt separate de, un fel de,
cuvinte, și un colon.
Deci, Objective-C, încearcă să-l frumos și ușor pentru tine de a citi cu voce tare -
Codul dvs. - și l-au semi, un fel de, face sens.
>> Cu toate acestea, a face doar asta nu este de ajuns.
Permiteți-mi micșora acum.
Face doar acest lucru nu este suficient pentru a obține ceea ce avem pentru a anterior.
Deci, aici, veți observa că există de fapt, nu va fi nici un fel de
bar, aici, nu?
Nu există nici o bara de navigare, ceea ce înseamnă că noi încă nu am ajuns.
>> Și putem testa asta, de asemenea, de, probabil, schimbarea fondul
ViewController, corect?
ViewController.background--
ah.
Deci, a se vedea cum ViewController nu au avut o culoare de fundal, chiar dacă am
a vrut să-l acces?
Și asta pentru că ViewController este un container pentru vedere.
Deci, ea are o vedere de proprietate, care apoi are o culoare de fundal.
>> Și, eu pot seta, un fel de plictisitor, sunând la culoare
pe obiect UIColor.
Deci, o notificare aici, redColor este o metodă.
Este o metodă de clasă de UIcolor.
Pentru că nu am avut de a crea un exemplu real al unei UIColor în ordine
pentru a apela metoda pe ea.
Eu doar, pur și simplu, a numit-o pe numele de tip asemănător.
Eu, ca, a numit-o pe int, dacă Int avea, cum ar fi, o metodă de a-l, de exemplu.
>> Și așa, dacă vom rula acest cod, vom observă că fundalul este
de fapt, nu roșu.
Este încă alb.
Și cum o putem obține în jurul valorii, care este, observați cum nu e self.window.
Adică, cum ar fi, recipientul final pentru aplicația dumneavoastră.
Acesta este cel final care conține totul de pe ecran, pentru o
iPhone sau aplicații iPad.
>> Și, în mod convenabil, self.window are această proprietate numit
rootViewController.
Și care va fi indicatorul a la prima vedere controler interior
din aplicația.
Deci, ce vrem să facem aici, acum, este pentru a seta ca egal la navigare nostru
controler.
Corect?
Pentru că, tehnic, de navigație controler este primul nostru de vedere
controler.
Ea ține evidența de o serie de alte vedere controlere, și am împins această
vedere controler în care matrice în controlerul de navigare.
>> Deci, tu nu vrei să faci asta.
Asta nu ar fi chiar te ajuta.
Pe care doriți să faceți acest lucru, dacă ai vrut să faci un controler de navigație, care mai
dintre voi, probabil, va pentru că veți dori la, un fel de, au un fel de,
cum ar fi, meniu pentru a reveni la sau unele pagina de start pentru a reveni la, mai degrabă decât o
ecran gol.
Da?
>> Audiența: Este incomod pentru tine pentru a mări -
>> Rhed SHI: Da.
Deci, da.
Acesta este codul, și acum haideți să-l testeze.
>> Deci, aici vom merge.
Magie.
Deci, OK.
Mulțumesc.
OK.
Deci, acum, ce vrem să facem este - așa, suntem un fel de limitat, aici, nu?
Am putea scrie potențial totul în interiorul acestui singură funcție.
Dar, asta nu e modul în care dezvoltarea iOS de obicei, funcționează.
>> Deci, ceea ce am de gând să faci este, suntem va crea unele fișiere noi.
Dar, mai precis, vom a crea o altă clasă Objective-C, sau
un alt obiect -
clasă și obiecte sunt interschimbabile aici.
Și, iată cum am putut, eventual, a crea o altă clasă de controlere U.
>> Deci, este o sub-clasă, așa cum veți observa, aici, este o sub-clasă a
Vedere UI controler, dar eu pot numim orice alt nume aici.
Am putea numi acest CS50, am putea numi acest punct de vedere controler, am putea numi
acest bla vedere controler -
tot ce vreau.
Aceasta este doar numele de clasa.
Cu toate acestea, va fi important pentru că, în esență, ce fac
aici este, creez un alt nume de clasă.
Deci, aceasta va fi, cum ar fi, unele un fel de tip sau a unui obiect.
Deci, ar trebui să fie un pic generic.
Acesta nu va fi foarte specifice.
>> Și, de asemenea, vreau să subliniez aceste două opțiuni.
Pentru că facem totul în interiorul cod, uneori este mult mai ușor
pentru a aduce într-un fișier de interfață, astfel încât Am posibilitatea să glisați și să fixați literalmente, ca
am facut mai devreme cu storyboard -
Știi, o etichetă, sau un buton, sau orice altceva.
Și astfel, xibs sunt fișiere care vă permit să se că, și tu trebuie să-l cârlig
la acest fișier controler de vedere.
>> Deci, am de gând să în mod deliberat nu a verifica acest lucru.
De obicei, mi-ar verifica acest lucru, și dacă am doar a facut acest lucru pentru iPhone sau iPad, am
ar verifica acest lucru și pur și simplu au o pentru, știți, iPhone sau iPad.
Dar din moment ce eu fac universal, am de gând pentru a crea două dintre cele mai târziu.
Deci, am de gând să în mod deliberat debifați această.
>> Acest lucru este, de asemenea, foarte important.
O mulțime de ori, am avut bug-uri în cazul în care acest lucru nu a fost verificat.
Și astfel, în mod evident, acest fisier nu este, un fel de, cum ar fi, inclus sau importate
în interiorul acestui folder de test.
Și astfel, codul meu nu are absolut nici o idee de existența acestui dosar, și
care provoacă o mulțime de durere și ore de depanare.
Dar, asigurați-vă că doar acest lucru este verificat atât de că, știți, obiectivul acestei
fișier este pentru această aplicație.
>> OK.
Deci, acum am creat două fișiere noi.
Și aceste fișiere arata destul de gol.
Și, de fapt, de asemenea, să continue pe de crearea fișierelor XIb.
Deci, în prealabil, am fost în Cocoa Touch drop-down.
Acum, am de gând să merg în Utilizatorului Interfata touch, și după cum puteți vedea, am
poate crea un storyboard.
>> Deci, chiar am început cu un gol cerere, pot folosi în continuare un
storyboard.
Deși, acesta devine dificil din punct de vedere de modul în care doriți să vă conectați
care la codul.
Deci, eu nu va merge acolo.
>> Dar, ceea ce vrem să facem acum este să creați o vizualizare.
Și puteți alege pentru un iPhone sau un iPad.
Și de obicei, pentru a desemna diferență - dacă faci o
utilizare universală -
vă fie pus un iPhone de subliniere, sau puteți face o Twiddly.
Acesta nu contează cu adevărat.
Este pur și simplu pentru tine să se diferențieze care punct de vedere este pentru dispozitiv care.
>> Și așa, acum uite.
Am un ecran care pot lucra cu.
Și astfel, de exemplu, pot pune o etichetă pe aici, știi, și, de asemenea, pot pune
un alt buton aici.
Nu voi deranja schimbare valorile de aici.
>> Dar, ceea ce este important aici este că proprietarul fișierului -
deci, eu sunt în interiorul iPhone vedere, fișier iPhone XIb.
Și în acest domeniu de navigare sau drop-down meniu, vreau să merg la
proprietar fișier.
Și aceasta este într-adevăr pas important aici.
Vreau sa fac vizualizarea de clasă controler, astfel ca si acest fisier este XIb
vor fi asociate cu punctul meu de vedere controler.
Și nimic din ce fac eu în interiorul meu de vedere controler de programare este
O să se reflecte pe aici.
>> Deci, cu toate acestea, observă că -
De fapt, hai să facem acest punct de vedere albastru fundal, de exemplu.
Sau verde.
Și apoi, așa că, dacă veți observa, înapoi în acest cod, acest lucru este în cazul în care am ajuns să ne
controler de navigare.
>> Chiar dacă am făcut acest pas, este încă de gând să fie roșu, nu verde.
Și nu există un motiv.
Este pentru că, atunci când am inited vedere controler nostru, aici -
îmi pare rău, e un pic nebun -
când ne-am inited vedere controler aici, am inited de tipul general
UIViewController.
OK?
Așa că nici măcar nu fac cu această clasă.
>> Deci, amintiți-vă, aceasta este ca o clasă acum.
Acesta poate fi considerat ca un tip, doar ca UIViewController este un tip.
Și în scopul de a utiliza că, ceea ce trebuie să facem este de import-l -
ViewController import -
și, după cum puteți vedea, ea AutoFills-o pentru mine.
Deci, ViewController -
și acum, aici, eu pot schimba acest lucru UIViewController la ViewController.
Și acum, aici, eu pot schimba aceasta a ViewController.
>> Să facem asta din nou.
E încă roșu.
Și motivul pentru care este încă roșie se datorează faptului că -
woah, ce sa întâmplat acolo?
Ne-am dorit să asocieze această XIb fișier cu vedere controlerul.
Cu toate acestea, în scopul de a face de fapt, că, avem nevoie pentru a merge în această.
Și când vom face init, vrem să facem initWithNibName, iar apoi ne-am dori să
face la șir View_iPhone, de exemplu.
Puteți ignora pachet aici.
>> Și acest lucru se întâmplă pentru a permite ne, de fapt -
uh oh, există o problemă.
Corect.
>> Și astfel, există o problemă, deoarece, în fișierul nostru de vedere XIb, avem o etichetă și
avem un buton.
Cu toate acestea, chiar dacă ne-am conectat cei doi, nu e nimic în interiorul
ViewController.h sau ViewController.m care reflectă cele
butoane sau aceste etichete.
Deci, avem nevoie pentru a scrie celor de la drept Proprietățile de vedere controlerului.
>> Deci, acesta este modul în care declara o proprietate.
Este nevoie în, de obicei, aceste două opțiuni.
În scopul de noi și acest seminar, Aș spune că, în general,
cele mai multe proprietăți sunt nonatomic și reține.
Puteți citi de către Google căutare, știți, diferența dintre
nonatomic și să păstreze pe, tine știu, Google sau ceva.
Și te voi duce la, cum ar fi, stivă Preaplin, în cazul în care oamenii vor avea
răspunsuri pentru diferențele între cei.
Dar de acum, asta e ceea ce ne-am Vreau să fie preocupat de.
>> Și vrem să facem o etichetă UI, stele, și putem să-l numim ceea ce ne dorim.
Putem numi acest lucru, știți, eticheta.
Si, vom crea un alt una pentru butonul.
Și amintiți-vă pentru a include asterisc, pentru că avem de-a face cu indicii
destul de mult peste tot în interiorul de Objective-C.
>> Cu toate acestea, că nu va mai rezolva problema, după cum puteți vedea aici.
Iar motivul este că, ori de câte ori ne-am doriți să conectați o etichetă fișier XIb sau un
buton pentru a programului, sau antetul și dosar de punere în aplicare, vrem să
adăuga acest bucată de cod -
priză.
Observați că este un cuvânt cheie.
>> Și, de îndată ce am terminat tastarea asta, ar trebui să aibă aceste
două cercuri, aici.
De obicei, ei nu sunt completate inch
Eu nu sunt sigur de ce ei sunt.
Dar, de obicei, va trebui să manual a le conecta prin a merge la această parte a
zona de utilitati.
>> Și astfel, chiar acum, am eticheta mea selectat, și vreau să trageți acest nou
corelarea priză la proprietar dosar meu, și apoi faceți clic pe Etichetă.
Deci, acum, în cele din urmă, această etichetă este conectat la această etichetă.
Și această etichetă este ceea ce am de gând să folosesc programatic pentru a schimba sale
text, fontul, fundal sale culoare, etc.
>> Deci, de ce nu facem aceeași pentru butonul?
Și, după cum veți observa, de pe butonul, E un pic mai complicat.
Pentru ca, vreau sa spun, tu ar trebui să apăsați pe un buton, asa ca are un lot
de opțiuni pentru modul în care utilizatorii poate apăsa pe un buton.
Și apoi, vom vedea mai târziu că ne putem conecta la acest noastră
cod pentru a face să funcționeze.
>> Deci, de acum, deși, vrem să vă conectați acesta a butonului real
interiorul codul nostru.
Deci, mergem la noua priza de afiliere, și apoi a face butonul.
Acum, haideți să ruleze din nou.
Uh oh.
OK.
Nu știu ce se întâmplă aici, acum.
Whoa.
Doar un moment, aici.
>> De fapt, de ce nu am lua o uita-te la un alt exemplu, în
interesul de timp.
OK.
Deci, aici e mai ușor de preparat exemplu pentru ViewController.
După cum puteți vedea aici, am inclus proprietățile pentru
eticheta și butonul.
Și apoi, această bucată de cod aici -
acest IBaction -
o legătură la acest buton aici.
Deci, după cum puteți vedea aici, Touch Up Inside este conectat la selectorul
numit apăsat butonul.
>> Deci, putem merge de fapt, prin mișcare din nou, aici, prin luarea Touch Up
În interiorul și trăgându-l la Fișier Proprietarul, și apoi
faceți clic pe butonul apăsat.
Acum, haideți să ruleze codul nostru.
Deci, acum, acest buton funcționează acum și ne va duce la următoarea pagină.
>> Și, în termeni de vedere controler noastre, aceasta este o bucată de cod care a avut
de îngrijire a butonului apăsat.
Și este important de observat aici, că Am creat un alt tip de vedere
controler numit un tabel vedere controler.
Deci, acest lucru a fost similară la spate în storyboard, când am tras una din
aceste controlere vezi tabelul în storyboard.
Creez un alt
>> Pointer la vizualizare tabel controler, alloc și init-ING, și apoi a face
controler de navigație de sine punct, împinge ViewController, acest nou
viewController.
Și am stabilit ca animația să da, pentru că acum interiorul app mea, și eu
vrei sa vezi de fapt, animația va din pagina de start a tabelului
vedere controler.
>> Audiența: Nu vă mai faceți griji de colectare a gunoiului?
>> Rhed SHI: Ce-i asta?
Nu.
Deci, întrebarea a fost, ai de a lucra cu colectarea gunoiului?
Deci, Xcode 4 a avut ca ARC, care este numărare de referință automat.
Și așa, de obicei, atunci când începe un nou proiect, ar trebui să verificați, pentru că
nimeni nu vrea cu adevărat să se ocupe de eliberarea de memorie și alte chestii.
Dar cred că în Xcode 5, nu există nici măcar această opțiune pe noul proiect.
Deci, în mod automat face asta pentru tine.
Da?
>> Audiența: Poți să exportați un PDF în storyboard-ul?
>> Rhed SHI: Da, cu siguranta.
Deci, toate acestea vor fi incluse în codul sursă, astfel încât voi puteți verifica
proiectului Xcode real pentru ea.
Da?
>> Audiența: Dar, vreau sa spun, ca, pot imprima un PDF cu storyboard meu?
Dacă vreau doar să exporte imagini pentru a arăta pe cineva.
>> Rhed SHI: Oh, da.
Cred că, poate, puteți doar să ia o captură de ecran.
Da, și trimite-le un ecran împușcat sau ceva.
Da.
>> Deci, să vedem.
În interesul de timp, cred asta e tot ce pot acoperi azi.
Dar, eu știu că e, de fapt, doar abia atinge suprafața de iOS
dezvoltare.
Deci, vă rugăm să nu ezitați să mă contactați dacă aveți orice întrebări despre iOS
dezvoltare.
Și, sperăm, voi fi în măsură pentru a curăța o parte din codul sursa
fișiere de cod, astfel încât veți avea unele exemple foarte frumos de a lucra cu.
>> Altele decât că, dacă voi sunt de gând la CS50 Hackathon, eu pot sau
să nu fie acolo, și eu pot ajuta cu unele de dezvoltare iOS, de asemenea.
Deci, mulțumesc foarte mult, băieți.