[Powered by Google Translate] [Seminar] [iOS: Pisanje Apps Kot Boss]
[Tommy MacWilliam] [Harvard University]
[To je CS50.] [CS50.TV]
>> V redu, vsi, dobrodošli na iOS: Pisanje Apps kot Boss.
Seminar se bo osredotočil na pisanje aplikacij za iPhone
in v zameno pisanje aplikacij za iPad, zato smo v bistvu gre na sprehod skozi
nekaj različnih primerov, kako narediti aplikacijo, preprosta igra, kot Tic Tac Toe,
ali če ste bolj zainteresirani za izdelavo aplikacijo kot neke vrste bralnik novic
ali kaj podobnega, da komunicira z internetom bom govoril o tem, kot dobro.
Tukaj je naš kratek program.
>> IOS programi so napisana v jeziku, ki se imenuje Objective-C,
in zato je to malo podobna C, vendar ni res na vse,
Tako bomo lahko govorili malo o jeziku samem
in potem kako graditi iPhone aplikacije, ki uporabljajo to aplikacijo program, imenovan Xcode,
ki, če niste prenesli še vas prosimo, da začnete prenos zdaj.
To je nekaj gigabajtov.
To bi moralo biti brezplačno na voljo na App Store, tako da boste morali imeti Mac
idealno nameščeno najnovejšo različico OS X.
Če niste, ni problema.
Imamo Macov v znanosti centru je na voljo za vašo uporabo
z Xcode nameščen, zato vas prosimo, da uporabite tiste za razvoj.
Če želite aplikacijo, vendar nimajo Mac, ne skrbite.
Obstaja veliko kampusu sredstva za to.
In tako potem bomo za kritje 2 večje primere različnih aplikacij, ki jih lahko naredite.
Objective-C je tehnično, kar se imenuje super sklop C.
To pomeni, da vsaka koda C velja tudi Objective-C kodo.
To pomeni, da smo nekako kanal posnet na nekaj dodatnih funkcij za C.
Nekatere od teh funkcij so, ne da bi kdaj napisal malloc enkrat, hvala bogu,
ne da bi morali skrbeti teh neumnih kazalcev in njihovo sprostitev in vse te stvari
sovražiš o C, in to je nekako izginil v Objective-C.
>> Zdaj, Objective-C ima tudi veliko večjo standardno knjižnico,
tako da je veliko več, funkcionalnost, ki jo dobite v prosti notranjosti Objective-C.
Se spomniš, ko smo pisali PHP smo opazili, da smo šli iz
to najmanjši jezik, velikan knjižnici vseh teh norih stvari, ki jih lahko storite.
Isto se dogaja v iOS.
Tam predmeti za stvari, kot budistični koledar, in res nič
si lahko morda misliš verjetno že obstaja v izvajanju Objective-C je.
Cilj del Objective-C je navajanje nekaj
imenovano objektno programiranje.
To je neke vrste nov koncept, vendar smo dejansko v glavnem naučili
Veliko teh konceptov je že.
Ideja objektno programiranje je, da greš za strukturiranje
Veliko kodo okoli teh stvari, imenovane razrede,
in so ti razredi res praznoval konstrukti.
Notranjost je struct smo v bistvu rekel, tukaj je stvar,
in lahko to stvar ima člane.
Na primer, lahko vozlišča v povezanem seznamu so tudi druge stvari
kot vrednost, kazalec na naslednji vozel v seznamu,
in skupaj, da kazalec in da je vrednost sestavljajo to en primerek struct.
Razredi so zelo podobni, razen
razredi imajo lahko tudi funkcije znotraj njih.
Ko smo razglasila struct, bi lahko samo rečem, int n ali vozlišče * naslednji.
>> Zdaj z Objective-C lahko dejansko dal nalog
znotraj teh stvari.
Še ena stvar, ki lahko storite, je, da razredi more dedovati podatkov iz drugih razredov.
Na primer, bomo morali iskati na kup vgrajeno v razredih Objective-C.
Eden od njih bi lahko bil razred, ki predstavlja pogled za zaslon,
in tako z besedami, želim izvajati svoj pogled
smo v bistvu pomeni nekoga na Apple, verjetno res prijazni ljudje,
napisal ta razred za mano, in je obdelal stvari, kot prikazuje gumbe
ali bi bil zaslon, in mi bi bilo res bolečino
izvajati vse te funkcije sami, zato jih preprosto
dedovanje podatkov lahko rečemo, da ste storili vse, kar je v tem razredu
Želim tudi znotraj mojem razredu, potem pa bom še nekaj drugih stvari,
sicer izvaja aplikacijo.
To je, kaj ta beseda pomeni, dedovanje. Bomo videli bolj konkreten primer.
>> In končno, ključ z objektno programiranje, da
vodi k inkapsulacijo podatkov.
V nekaterih naš problem kombinacije lahko imamo te velike, globalne spremenljivke
globals in povsod, in to je, kako sva spremljali stanje.
Z razredov lahko začnemo inkapsulaciji informacij znotraj objekta.
Če imamo en zaslon na naše spletne smo v resnici ne potrebujejo nobenih podatkov
še en zaslon v naši notranjosti app, da
in tako z zapornim stvari v razredih to dejansko vodi
veliko bolje oznako modela, in to je mogoče z nekaj dodatnih funkcij
Objective-C.
OBVESTILA, sintaksa za Objective-C je banane.
To je nekaj, česar smo videli prej,
zato je malo krivulja učenja navaditi
Kaj za vraga to pomeni?
Toda, ko boste dobili mimo začetni krivulja učenja je to res, res gladka
, da začnete pisati programe.
>> Za prijavo razred, da sem rekel, je moj razred, obstaja,
in morda tukaj je nekaj stvari, ki jih bom pozneje določiti,
Jaz bom rekel @ vmesnika.
Jaz bom rekel @ vmesnika. Jaz bom dal moj razred ime.
In potem kasneje nekje drugje bom rekel @ konec,
in vse vmes @ @ vmesnikom in na koncu
se bo moj razred.
To se bo, kaj je notri naših datotek. H.
Tako kot v C naši h datoteke. Bistvu rekel tukaj je nekaj stvari, ki bodo obstajajo.
Jaz ne nujno ti, kaj počnejo še,
ampak prevajalnik mora vedeti, da obstaja.
Kasneje znotraj našega. M-datoteke, ker m za Objective-C
kjer se bomo dejansko dogaja, da določite, kaj ti razredi storiti.
Podobno kot naše. Datotek c, če smo za implementacijo funkcij.
Znotraj našega. M datoteko bomo tukaj povedati, kaj vse funkcije
Notranjost moj razred, kar vsi.
In končno, notranjost struct lahko rečemo, znotraj teh zavitih oklepajih
int n ali vozlišče * naslednji,
in Objective-C bomo uporabil ključno besedo @ nepremičnine,
in to je tisto, kar se dogaja, da določite lastnosti,
ali ne-funkcije, ki so del mojih razredov.
>> Klicanje funkcije v Objective-C je tudi banane.
Ko smo prijavljeni funkcije v C smo rekli nekako takole int foo
in odprt paren, nato pa ji je dal seznam argumentov.
To je tisto, o razglasitvi metode ali funkcije izgleda v Objective-C.
Če želim, da razglasi funkcijo ali način
če pravim način je res samo funkcija, ki je član razreda,
Tako nekako zamenljivi, vendar ni res,
tako znotraj mojega načina želim ustvariti novo metodo.
To se dogaja, da se vrnete nič, tako da se bo praznine tipa.
To je vrnitev vrsta moje funkcije.
Zdaj imamo parens tukaj, ker, ne vem.
Nato se bo ime moje funkcije,
in na koncu bomo imeli podpičje, tako kot smo v C.
Kaj je novega tukaj je ta človek tukaj.
Ta vezaj je dejansko potrebno, in kaj to pove, da je
Ta metoda tukaj mora biti imenovana na primer za razred.
>> Ko smo objavili naše konstrukti bomo verjetno rekel nekaj takega kot
struct vozlišča n, in da je dejansko ustvaril
ali zaženejo eno izmed teh konstrukti, tako da sem dejansko začela delovati
s tem, kar je znotraj njega, tako da je ta črtica pomeni, da moramo
sprožajo razred, tako kot mi, da zaženejo struct
preden lahko rečemo te metode na njej.
Če želim, da začnete dodajati argumente mojih metod
postane še bolj banane.
Tukaj je moje ime metode.
Potem bom imela debelo črevo, debelo črevo in po tem, da pravi, da prihaja nekaj argumentov.
Ta metoda vzame en argument.
Vrsta svoji trditvi je int, in ime te trditve
ali je spremenljivka, da bom za začetek uporabe notranjost metodo sem klical.
Tudi to je način. To traja en argument.
>> Če želite začeti dodajanjem več argumentov, da postane bolj banane
v tem, da smo to debelo črevo, ki pravi, tukaj je moj seznam argumentov.
Ta prvi argument je celo število.
No, to Drugi argument je zanimivo.
Spremenljivka, da bom lahko v notranjosti z moje funkcije
se imenuje f, tako znotraj mojega delovanja lahko rečem,
f + = 1 ali kaj podobnega.
To stvar tukaj je v bistvu ključno za to trditev ali parameter.
Tako kot smo imeli parov ključev vrednost in nekaj podobnega JSON ali združevanja nizi
Objective-C je odločitev za povedati, v redu, samo zato, da je zelo jasno,
Ko kličete metodo, kaj vse ti parametri so
Jaz sem dejansko dogaja, da naštejemo vse.
Ko pokličete metodo, boste dejansko rekel andFloat,
in potem boš dajati noter
>> Zanimivo je, da se ta ne imenuje, ampak vseh drugih parametrov,
tako da, če bomo imeli 3. trditev bi rekel andFloat
in še plavajo in tako naprej.
Ko sem klical te metode je seveda banane,
tako da, če imam cilj in sem opredelila metodo imenovano foo,
in želim, da ga pokličete, kot pravijo foo za odpiranje / zapiranje parens
Grem odpreti konzolo.
Tukaj je ime moje metode.
Jaz grem zapreti nosilec, in to je predmet Kličem ga na.
Ne pozabite, da vseh teh metod obstajajo znotraj razredov
ker lahko razrede, določene metode znotraj njih.
>> Tukaj sem samovoljno ustvaril predmet nekaterih razreda,
in to je sintaksa za tem.
Obstajata 2 koraki za ustvarjanje predmeta.
Prvi korak je, da sem želite dodeliti prostora.
To je enako, kot knjižnične funkcije malloc. Nimamo torej malloc več.
Mi padla m, jo ​​alloc in je nadomestil. C. Z m.
Ko smo alloc kaj bomo potem morali zagnati.
V bistvu, ko ustvarjate predmete, boste morda želeli, da imajo nekaj logike
ki izvrši, ko si ustvarjena, tako da lahko preide na nekaterih privzetih vrednosti
ali kaj podobnega, zato je ta metoda init je tisto, kar dejansko ustvarja predmet.
Najprej smo dodelitev prostora, tako kot smo to storili v C,
in potem smo ga inicializirati, ki lahko ali pa ne naredi veliko.
Potem bomo to stvar vrača v predmeta o.
Tam je zvezda tu, ker je to tehnično kazalec,
vendar ne skrbite, kazalci niso tako velik posel v Objective-C več.
>> Zdaj smo zaženejo ta razred, imenovan NSObject,
in to je samo naključna razred, ki ga je Apple.
Smo zaženejo to, zdaj pa imam primerek tega razreda
V tem objektu O, to pomeni, da če sem opredeljen
Te metode bi jih lahko kličem takole.
Podobno je, če sem hotel poklicati metodo z enim argumentom
tako da je to bar metoda, da se vzame en argument,
in tukaj je BAZ: razvrstitev za postopek, tako da to traja 2 argumente.
To kliče eno funkcijo, o tem predmetu o.
Smiselno?
Sintaksa je smiselna, vendar se nekako navadil.
>> V redu, kaj je govoril o nekaj stvari, ki so vgrajene v Objective-C
ki niso nujno vgrajeni v C.
V C smo nekako se je ukvarjal s strunami, kot teh neumnih znakov nizi,
in je dobil zelo nadležno.
Objective-C ima vgrajeno vse tiste, za nas, in to je vgrajeno v
uporabljate ta razred, imenovan NSString.
Ko želim ustvariti NSString imamo več Skrivnosten sintakso.
Namesto da bi rekel "cs50 rečemo" @ "cs50"
in to je samo sintakso za razglasitev nizov v Objective-C.
To je zelo enostavno pozabiti, da ne.
Zdaj, ko imam to, to je niz, ampak obvestilo
to je res samo predmet.
Rekel sem NSString, kar pomeni, da zaženejo razred
imenovano NSString, ki je nekdo napisal za mene,
in bili so zelo lepo o njem, in sedaj
Lahko začnete kliče metode na njej.
Če kličem metodo dolžino na ta predmet s
da se bo vrnil k meni na dolžino niza.
To je tako kot strlen v C.
To bi vrnili 4.
>> Podobno je drug način sem morda želeli, da skrbi za to characterAtIndex.
To je metoda, ki pravi, da na ta niz s
Želim si, da bi dobili 0. značaja,
in zato bi se ta vrne k meni znakov c,
in tam je cel kup več teh metod, ki jih lahko Google res enostavno.
Dokumentacija Apple je super, in bomo lahko ogledate, da v malo.
Tisti, ki so strune.
Prav tako smo spremenljive velikosti nizi zgrajena palcev
Se spomniš, ko smo v C prijavljeni niz
smo morali reči, da imate 5 elementov, konec zgodbe.
Ko smo prišli do JavaScript in PHP lahko začnemo
počeli stvari, kot je dodajanje elementov ali premikanje elementov.
Mi lahko storite enako v Objective-C.
Namesto da bi ustvarili množico na običajen način C
imamo še eno skupino, imenovano NSMutableArray.
Tam je tudi NSArray,
in to se dogaja, da v bistvu zajame nekaj matriko.
Ta pravi, da je prva stvar, želim storiti, je, da sem želite dodeliti
prostor za nov niz, in ko sem ga dodeliti
Nato sem potrebo, da se zažene.
Še enkrat, samo opozarjajo teh 2 načinov.
No, to pomeni, da je znotraj tega predmeta je
Imam prazen niz sedi tam.
Če želim dodati nekaj tem polju, lahko pokličete addObject metodo.
Želim dodati predmet v polju, a, in želim dodati niz CS50.
Če bi želel nasprotno odstraniti, da lahko rečem, hočem
odstranite predmet na prvo mesto na polju ali ugovarja.
>> Smiselno?
Ok, nekako navadil na to kvadratni stvar držala.
Mimogrede, v notranjosti veliko knjižnic Apple boste videli to NS.
NS dejansko stoji za naslednji korak, ki je bil eden izmed Steve Jobs družb, 1.
in to je, če je res začel pisati veliko kode
kot nekakšno osnovo za Mac OS X in vse druge stvari,
zato je ta NS je nekako to lepo zapuščino zakričal na eno izmed prejšnjih družb
nazaj, ko Apple prvič začenjajo.
To je povsod.
Oglejmo si na bolj celosten Objective-C, na primer.
Tukaj sem znotraj Xcode.
Da tu, sem najprej naložiti Xcode iz App Store,
jo odprli, potem pa sem šel gor do dokumentacije,
sem na novo, nato pa projekt.
Ko sem naredil, da imam vse te možnosti, kaj želim ustvariti,
in tako bomo lahko pogled na te možnosti kasneje,
ampak samo za ta primer, ker smo dejansko ne dogaja, da imajo aplikacijo še
Prišel sem sem, in sem rekel Command Line Tool,
in to je aplikacija, ki lahko tečem v ukazni vrstici
tako kot smo bili teče iz C.
Tako sem ustvaril ta projekt, in sedaj sem tu,
Torej, kaj je prvi vpogled v to zadevo, in to je treba videti precej pozna.
Imam int ime. Tukaj je moj prijatelj argc, argv moj drugi prijatelj.
Tako lahko vidimo, da je to vstopna točka za moj prvi cilj-C vloge.
Tu lahko odmislimo to za zdaj.
To je v bistvu upravljanje pomnilnika stvari, ki vam ne bo res
nikoli treba skrbeti.
>> Oglejmo si te prve bloka tukaj.
Ta prva vrstica, če rečem, Študentska * alice = [[Student alloc] pr] kaj je to delaš?
Ta prvi študent sem, da je to verjetno razred.
To ni razred, ki je napisal Apple, vendar je razred, ki sem jih napisal.
Prva stvar, želim storiti, je, da sem želite dodeliti prostor za novega študenta,
in potem ga hočem zagnati, tako da to mi daje nazaj
ta novi študent predmet, in sem to shranjevanje v spremenljivko, imenovano Alice.
Odkod ta razred prišel?
No, tukaj je na levi strani so vse različne datoteke znotraj mojega projekta.
Tukaj lahko vidite, sem imel Student.h in Student.m.
H datoteko., Se spomniš, ko je izjavljam, vse stvari,
da obstajajo v razredu.
>> Oglejmo pogled na to.
V redu, tukaj imamo to @ vmesnik, kar pravi, da prihaja
izjave o vsem, kar se bo obstajal v mojem razredu.
Potem sem imel debelo črevo. Potem imam to NSObject stvar.
To pomeni, da ima debelo črevo dediščino, malo smo se pogovarjali malo prej.
To pove vse NSObject lahko storite
če je ta razred NSObject napisal nekdo drug,
Vse to lahko storite NSObject želim, da bi lahko to naredil.
Z besedami: NSObject to pomeni, da sem v bistvu
podedoval vso funkcionalnost drugega razreda.
To je res mi je dal cel kup različnih metod in lastnosti, ki lahko uporabljajo.
Tu spodaj sem ustvariti 2 lastnosti.
To pomeni, da sem študent, če bi bilo to struct, bi bilo to v 2 stvari
znotraj mojega struct, zato je vsak študent ima ime
to je niz, študent ima tudi razred,
ki je int.
>> Končno, tukaj bom najti način za moje učence.
Klical sem moj način, initWithName, in to traja en argument,
in da argument je niz, sem poklical, da ime.
Zdaj pa si poglejmo, kako smo dejansko izvaja ta razred.
Tukaj, zdaj sem znotraj moje datoteke. M,
m za izvajanje, se mi zdi.
Imam izvajanje, svoj konec in tu je, če sem dejansko opredelitvijo
kaj initWithName ne.
Imam initWithName, ime mojega parametra, nato pa to
Tu sem dejansko ustvarja študenta,
in zato je to malo skrivnosten, ampak to je nekako boiler
, ki jih želite vključiti v svoje proizvajalci.
Ta funkcija inicializacije tukaj initWithName je tip konstruktor.
Vi ste v bistvu izgradnjo novega študentskega predmet
in morda pošiljanje nekaterih podatkov v njej.
Prva stvar, želim storiti, je, vas vabim, da init na to super stvar.
>> Se spomniš, ko sem rekel, tukaj v datoteko. H
da je vse NSObject ima študent tudi je.
To pomeni, da ko sem ustvariti študenta, kar sem tudi morate storiti je,
poskrbite, da NSObject, da sem podedoval vse te podatke iz
tudi inicializira pravilno.
Kaj moram reči, je to super se dejansko dogaja, da se nanašajo na matično razred
da sem podedoval od, zato želim, da poskrbite, da sem inicializacijo
vse, kar sem glede na to, preden začnem poskušam uporabljati.
Potem, če je pravilno inicializiran je to tako, kot pravijo, če malloc
Ni zadetka za nično, potem lahko začnem nastaviti nekaj lastnosti.
>> V JavaScript in PHP sva to ključno besedo imenujemo to,
in to iz sedanjega primerek razreda.
V Objective-C imenujemo to jaz.
Ko rečem self.name, kar pomeni, da je predmet
Pravkar sem ustvaril, ko sem rekel študent alloc init,
da se dogaja, da mi vrne predmet.
To pomeni, da želim, da nastavite ime tega predmeta
za kar sem opravil noter
Tako kot v C, imamo dostop člane s to piko,
Tako pravi self.name ime študenta predmeta
Zdaj bo vse, kar si pravkar opravil noter
In tako končno bom lahko vrnil, zato sem dejansko dobil nekaj nazaj.
>> Vprašanja?
Ok, tako da to samo init = super,
če ne popolnoma razumejo dediščino stvari, ne skrbite.
Samo vem, da če si kdaj želeli, da bi svoj način samo init
storiti, in boste na dobri poti.
Ja. >> [Študent] Kaj pa, če je samo pomeni?
To pomeni, da ko smo malloc kaj moramo vedno preveriti, če je bila enaka null,
in če bi bilo nič, potem smo zapustili.
To je ista stvar, kajti če ta vrne null, potem bomo verjetno bo SEG napake
če začnemo poskuša manipulirati.
To je naš študent razred.
To pomeni, da lahko zažene naših študentov na enega od dveh načinov.
Če rečem, študent alloc init ne bom na ta način, da sem napisal,
in namesto tega lahko preprosto rekli alice.name,
in zdaj bom, da nastavi ime lastnosti.
>> Podobno je, če želim uporabljati to metodo initWithName
Lahko preprosto reči alloc, nato pa kot pravijo pr
Bom poklical, da je metoda, ki sem jo pravkar ustvarili, in bom poslati v Bobu.
Na tej točki, je ta predmet Bob ima enako ime Bob.
V redu, tukaj sem s pomočjo tega NSMutableArray, da smo pogledal prej.
Jaz sem dodelitev space.Then sem inicializacijo nov niz.
Jaz bom dodal 2 stvari za to.
Ta matrika ima zdaj v lasti študentske predmetov.
Obvestilo, da nikjer ni moram reči, to je množica študentov.
Rekel sem, da je matrika, obdobje.
Potem bom lahko dal karkoli znotraj nje, ki ga želim.
Tukaj imam 2 predmetov.
>> Končno imam drug predmet tukaj, to LTE.
Tukaj v TF.h v bistvu ista stvar.
Jaz sem podedoval od NSObject, in mimogrede,
Ko ustvarite razrede je vse to naredil za vas,
ta vrsta boiler vmesnika.
To je lastnost študentov.
Imam nekaj metod, tu se res ne naredi veliko,
in tako to pomeni, da ko sem ustvariti ta objekt TF
Lahko pokličete to metodo oceno o njem, kot je ta.
Vsa vprašanja v zvezi sintakso Objective-C, preden smo začeli premikati v nekaj več
Zanimivo programi za razvoj stvari?
>> Ok, tako da je dejansko lahko iPhone app.
Jedro razredov, da boste v notranjosti z uporabo vašega iPhone app se imenujejo pogled krmilniki,
in pogled na krmilnik v bistvu predstavlja en zaslon
znotraj vašega app, tako da če sem na glasbeni app, na primer,
1 Pogled na regulator lahko zastopa stališče, v kateri sem si ogledate vse skladbe na svoj iPhone.
Še en pogled nadzornik lahko, ko kliknem na skladbo in začeli igrati
ali, kot sem pomikanjem umetnikov.
Vsak od teh različnih zaslonih bi lahko zastopali drugega upravljavca pogled,
in pogled na krmilnik je res samo razred, ki pravi, kako ta zaslon deluje.
Stvari, ki spolzi iz pogleda upravljavca, da bomo imeli lastnosti,
tako da stvari, kot na gumb se bo premoženje našem mnenju upravljavca.
>> Mi smo tudi dogaja, da imajo metode, in to so v bistvu rutine za obravnavo dogodkov.
Ta metoda pravi, ko pritisnete na ta gumb
Hočem nekaj narediti, in končno, spet,
bomo uporabljali samo to ključno za dostop do trenutni primerek.
Za izgradnjo vmesnikov v iOS je pravzaprav zelo, zelo enostavno.
Imajo to lepo povleci in spusti vmesnik, imenovan Interface Builder,
in 2 ključni koncepti, ki vodnika do vašega cilja-C vmesnikom Builder
so IBOutlet in IBAction.
IBOutlet preprosto pravi, da če ugotovi lastnost, ki je gumb,
in želite, da ga priključite na nekaj, kar v vašem dejanskega UI,
boš rekel, da je izhod.
Podobno, če želite, da predstavljajo za obravnavo dogodkov
potem boš rekel, da je tožba.
>> Da dejansko žico to grafični prikaz
in kodo to je res, res preprosta.
Če želite priključiti IBOutlet, vse kar morate storiti je, da nadzor nad klik,
in bomo videli zgled za to zelo hitro.
Vi nadzirate kliknite, kjer piše View Controller.
Ti boš povlecite v vmesniku, ali obratno,
Če želite priključiti dogodkov za obravnavo boš povleči iz vmesnika
v drugo smer.
Oglejmo si res preprost primer iOS.
>> Ustvarimo nov projekt.
Jaz bom prišel sem, da bi prijave,
in bom še en pogled aplikacijo.
Jaz bom še naprej. Bom dal svoj projekt ime.
Poklical bom mu Pozdravljeni.
Zanimivo je, da Apple ne prevzema želite ustvariti izdelek
tako, da ga prodajajo in jih lahko zaslužite.
Tu spodaj bom rekel, da je to iPhone app.
Ustvarite lahko iPad app, ali če želite ustvariti eno izmed teh aplikacij
, ki podpira obe napravi, ki jih lahko storite, da preveč.
To so tisto, kar želite, checkmarks bi izgledal.
>> Če želite uporabiti storyboards, ki jih bomo videli pozneje,
in boste zagotovo želeli uporabiti avtomatsko referenčni štetju
ki je lepa lastnost, ki vam preprečuje, da bi morali reči malloc in free.
Razen če želite klic malloc in free, jaz bi zapustiti to preveriti.
Bom še naslednji, in končno, to se dogaja, da bi me vprašal, če želim, da se shrani.
Jaz bom udaril ustvariti, in gremo.
Ustvaril sem nov projekt.
Tukaj na levi so vse datoteke, ki so bili v moji projekta,
in opazil, da imam cel kup in sploh nisem naredil.
IOS je super.
>> Na primer, tukaj je ta ViewController.h,
to se dogaja, da predstavlja svoj prvi krmilnik pogleda,
Tako prvi zaslon znotraj mojega app.
Zdaj vemo, kaj je to rekel.
Mi govoriš Kličem tem razredu ViewController,
in ViewController pa vse, kar počne UIViewController,
in to je spet nekaj razred, ki je zapisal, da Apple ne veliko stvari priročno za nas
želel prikazati na zaslonu.
Tu se lahko dejansko začela z določanjem, kaj je moj pogled na krmilnik ne,
in izkazalo se je, da res ne potrebujem tega.
To je koda, ki boiler Apple mi daje zastonj.
Sem, da je treba prvo vrstico, ali pa nimam razred,
tako da bomo znebili tega in se znebite tega.
Ok, to je moj prazen zaslon.
>> Zdaj pa še o tem MainStoryboard.storyboard,
in to je, če se začne, da se zanimivo.
To je prvi zaslon na moj app.
Če želim dodati gumb, v HTML sem moral ustvariti gumb oznako.
V Android morate ustvariti gumb oznako,
ampak v iOS, če sem prišel sem, da bi v spodnjem desnem
in če sem kliknite na to 3. 1 tukaj, kjer piše predmetov,
in sem lahko pomikate navzdol, ali sem lahko začel iskati gumb.
In poglej, gumb, tako da če sem dejansko povleci in spusti to pravico tam,
Pravkar sem dodal gumb za ta zaslon na moj app.
Če želim spremeniti besedilo, lahko sem jo dvokliknite,
povedati nekaj zapeljivih kot "Me pritiskom."
Ok, zdaj, če sem teči ta program, zato smo ga pripravi,
tako da bi sistem deloval kliku na gumb za predvajanje v zgornjem levem kotu, in tam je moj app.
Nisem naredil nič, in sem dobil videti sladko iPhone app.
Če želim, da ga ustaviti, lahko kliknete gumb za izklop
ker je bolj zabavno.
>> Recimo, da sem dejansko želijo nekaj zgodilo, ko pritisnem na ta gumb.
Za to, kaj moram storiti, je, da moram ustvariti
Novi trener dogodek ali dejanje.
To pomeni, da moram ustvariti neko metodo, ki jo želim, da se imenuje
Ob pritisku na gumb, tako da je ustvaril novo metodo.
Jaz sem znotraj ViewController.h.
Moram reči, da obstaja način.
Rabim vezaj 1. ker bom lahko kličem te na ogled krmilnika.
Moram dati to vrsto.
Vrsta to se bo, da IBAction stvar, ki smo videli prej.
To je dogodek trener, tako da se bo vrnil IBAction,
in to je namig, da Xcode reči, da
To je nekaj, kar želim, da nakaže nekaj.
Ne morem ji dati ime, kot buttonPressed, podpičjem.
>> Zdaj sem se razglasi za novo metodo globoko v mojem razredu.
Sem rekel, ta metoda obstaja.
Zdaj pa je prišel v ViewController.m,
in recimo, kaj lahko ta metoda storiti.
Če začnem tipkati, na primer (prazno) buttonPressed
Obvestilo Xcode je res lepo in autocompletes zame.
To je zares čudovito.
Obvestilo tukaj, da notranjost. M datoteko morem reči tudi za neveljavno,
in to je zato, ker IBAction pravzaprav ni tip.
To je hashtag dejansko definirana nekje, da je nična,
in spet, to je samo namig, da Xcode, ki pravi,
Hočem, da je to dogodek trener, pa bomo videli, zakaj v samo sekundo.
Ob pritisku na ta gumb bom nekaj siten
želel prikazati pojavno okno.
>> Če želite to narediti, da sem lahko ustvarite nov primerek tega razreda, imenovano UIAlertView,
in to je razred, ki je zapisal, da Apple se dogaja, da se prikaže siten ljudstvo.
Poklicali bomo to pojavno okno opozorilo, in imam 2 koraka, ne pozabite, da ustvarjanje tega predmeta.
Prva stvar, kar morate storiti, je dodelitev prostora.
Želim UIAlertView.
Želim dodeliti prostora. To je moja prva metoda.
Moj naslednji način je rad za inicializacijo,
in tako imam to veliko, dolgo metode, imenovane initWithTitle.
To je v bistvu gre za nadzor, kaj je to ljudstvo pravi.
Naslov mojega popup lahko pozdravi.
Sporočilo je to ljudstvo lahko "To je iOS."
Delegat stvar, ne vem, kaj to je.
Recimo, da to ni nič.
Sedaj lahko gumb, ki se dogaja, da se pojavi rekel nekaj podobnega "Seveda je,"
in res ne želim nobenih drugih gumbov, tako da je brisanje tem in zaprite nosilec.
>> Ok, sem ustvaril dodaten 1. Takole.
To je, kako sem lahko ustvarite novo ljudstvo.
Če želim, da bi dejansko kažejo, ljudstvo vas vabim, da v oddaji metodo.
Če želite to narediti, da lahko rečem, opozorilo in pokazati,
in spet, autocomplete je bila super lepo.
Če sem pozabil, kaj je bilo, če sem tipkal vs,
Jaz lahko pomikate tukaj, da ugotovimo, kaj je bilo,
in filtrira lepo.
Sedaj sem ustvaril to novo ljudstvo.
Vrnili se bomo na to, kar pomeni, delegat kasneje,
in zdaj želim povedati hočem to metodo za kurjenje
Ob pritisku na gumb, tako da se bom vrnil v svoj snemalni knjigi
in želim, da se zdaj priložite ta IBAction.
Prva stvar, ki jo želite storiti, je, kliknite na gumb.
Ko sem pritisnite ta gumb želim nekaj zgodilo.
Ne bom se držite nadzor.
Grem kliknite in povlecite gumb
do tja, kjer piše View Controller.
Vidimo lahko, da je lepo prižgal.
>> Če spustim z mojo miško imam sedaj to ljudstvo tja, kjer sem imel nekaj možnosti.
Ena od teh je, da se dogodki, lahko registrirajo.
To so vse te metode I, se navede v svojem spisu h, kot IBActions.
To je, kako Xcode ne ve, kaj bi morale biti v tej mali seznamu
tako da je le namig.
Če sem kliknite na gumb pritisniti, da sem sedaj registriran obravnavo dogodkov.
V JavaScriptu bomo imeli za povedati moram nekaj kode, ki so registrirana obravnavo dogodkov.
V Objective-C je bilo res tako enostavno.
Če bom tekel še enkrat
Zdaj, ko sem pritisnite gumb moja obravnavo dogodkov se bo ogenj,
in jaz bom dobil to pojavno okno.
Super, super enostavno tam.
>> Če boste kdaj želeli videti vse dogodke, ki se zgodijo je treba registrirati
na komponento, če kliknete na gumb
in sem prišel sem na desni strani
1. si lahko ogledate tukaj ne morem narediti stvari, kot so tip gumba
tako da, če hočeš eno izmed tistih, ki sem je, ali add kontaktne gumb
ali karkoli.
Če želim videti vse dogodke, ki so na ta gumb
če sem prišel do sem na desni strani
lahko ogledate tukaj na dogodkih, ki jih imam vse te različne dogodke.
Jaz lahko s pritiskom na gumb, ko sem spustil na gumb, ko sem dvakrat pipo ali karkoli,
in tisti, pravkar sem se prijavila, je to dogodek, imenovan Touch Up Inside,
in ta pravi, da je takoj, ko je moj prst odlepi gumb
ta dogodek se bo ogenj, in to je točno to, kar se je zgodilo.
To je nekako gumb neplačila stisnjenega dogodka.
>> Vsa vprašanja tako daleč?
Ok, to je, kako lahko začnemo žice se stvari v našem zakoniku
v stvari znotraj našega vmesnika.
Ne pozabite, prva stvar, ki jo je moral storiti, je bilo, da bi našli kodo,
in potem ožičen vmesnik s kodo,
in tam je naš prvi app.
Ok, to je bilo res kul, in smo ustvarili ta gumb.
Kaj pa, če ne želimo, da ustvarite kup lastnosti
kar te gumbe?
Na primer, v Tic Tac Toe Imam 9 gumbov,
in bi bilo super, super siten, da so za povleci in spusti 9 krat
ali če sem imel, da bi Tic Tac Toe z 81 namesto 9
in sem morala povleci in spusti 81-krat, in to je slabo.
Kaj lahko namesto tega je podobno kot HTML
ko smo imeli stvari, kot so ID-ji in imena, in ne moremo iskati stvari
njihov ID, tam je podoben pojem v iOS pozval oznake.
>> Tag je preprosto edinstven številčno oznako za komponento.
Če rečem, to je oznako 0, na primer,
če ustvarite gumb in ji dati oznako 0, pa bomo videli, kako to storiti v samo sekundo,
če želite, da se ta gumb lahko preprosto povedati hočem, da pokličete
the viewWithTag metodo na objektu tukaj,
the self.view, ki predstavlja sedanjo zaslon, na primer.
Če vas vabim, da se viewWithTag način, bom vleči nazaj na gumb z oznako 0.
Oglejmo si na tem opira Tic Tac Toe.
Prvič, to je moja storyboard.
Ustvaril sem te UI 10 gumbov.
Obvestilo so vsi enake velikosti.
Če sem kliknite eno od teh in sem prišel nazaj sem na tej desni strani
boste videli, da prilagodi pisavo tukaj, tako da sem pisavo, malo večji,
ampak tisto, kar sem tudi storil sem bila nastavljena to oznako.
Rekel sem, da ima to oznako 1, in da je zgoraj levo.
>> Zdaj, če sem kliknite drug gumb, kot je ta drugi tu,
Zdaj boste videli, da je moj tag je 2.
Vsaka od teh gumbov, samo ima edinstveno oznako,
in tako je to pozneje, kako bom začel interakciji
s svojo aplikacijo.
To je vse znotraj enega pogleda upravljavca,
ampak tukaj je tisto, kar imamo.
Imamo 3 lastnosti tukaj.
Prva in zadnja se bo pomenilo stanje moji ladji.
V bistvu je to prva je matrika predstavlja kjer Xs in so Os.
Ta druga tukaj nam pove, katere je na vrsti.
Opazili boste, da imam tudi te stvari tukaj.
Pred ko smo prijavljeni lastnosti smo jim dali ime in tip.
Prav tako lahko dobijo dodatne informacije tukaj.
Ta prvi pravi nonatomic, in kaj to pove
je v bistvu samo ena stvar, kdaj se poskušate dostopiti do te spremenljivke hkrati.
Lahko naredite bolj kompleksne aplikacije, ki so multi-navojem,
in tako nazaj Scratch smo imeli različne teme,
in bi lahko zaradi različnih sprites se delaš različne stvari hkrati.
>> Če to ne drži, kar pa ni v nič, da bomo lahko gledaš,
če rečemo, da je nonatomic dejansko dogaja, da se stvari malo hitreje.
Imamo tudi to stvar, imenovano dodeliti, močna ali šibka.
Ta dodeli samo pravi, da je to standardni tip.
To ni predmet ali kazalec, saj je to le int,
Tako je bool vgrajen v Objective-C.
Ta pravi, da ne poskušajo storiti ničesar fancy s kazalci tukaj.
To je redni stara Scaler.
Močne in šibke, je to slaba pravi, da je dejansko
Želim, da se to kaže na nekaj, kar je po mnenju upravljavca.
Ne bom se dejansko dodelijo ali init to sam.
Vmesnik builder, ko sem prost app, da se bo ravnanje z vso to inicializacijo.
Če rečem šibka, ki pravi, da je nekdo drug se bo ta ustvarja.
Če rečem, močna, ta pravi, da bom lahko 1
ki jo ustvarja ta deska predmeta,
zato tu imam nekaj več metod tukaj
na primer tožba, ko pritisnete gumb za novo igro,
dejanje, ko pritisnete na katero od drugih gumbov,
in tako dalje.
>> Ne bomo dobili v preveč logike Tic Tac Toe,
čeprav je zelo razburljivo, vendar pa si oglejte
nekatere stvari, ki jih počnemo znotraj iOS.
Ta nova metoda igra se bo odpuščen
ko pritisnem gumb za nov igro.
Kavelj, da do sem le prišel v mojo snemalno knjigo.
Sem kliknil na novo igro.
Če sem prišel sem na desni vidim, da se
Dotaknite Up Inside je nakazan na newGame metodo.
To je, zakaj se to dogaja, da bi dobili službo.
Metoda newGame bo naredil nekaj postavitev.
To se dogaja, da hočem, da počistite stanje sveta.
To je lep način za spremenljive nize.
To se dogaja, da pravijo, da je zdaj na vrsti Xa,
in zdaj bom to izkoristil viewWithTag stvar.
>> Vem, da mi gumbi imajo oznake, 1-9,
in to je nekaj, kar sem samovoljno izbrala.
Če želim iz besedila vsak gumb, da je prazna
ker sem pravkar začel novo igro in ne želim vse
Xs ali OS, ki so ostala, lahko to storim.
Lahko rečem, hočem pogled z oznako, 1, 2, 3, 4 in tako naprej.
To bo pull drug gumb vsakič.
Tukaj bom, da ga oddanih UIButton.
Tako kot smo lahko odda ints, da plava in obratno
Ta pravi, da želim, da glasuje za to UIButton.
To pomeni, da bo tip to * UIButton
ker kazalcev, vendar ne skrbite, saj niso več strah.
>> Ko sem ta gumb, vam bom poklical metodo na njej.
Ta metoda se imenuje setTitle forState, zato je ta pravi
Rad bi postavil besedilo gumb za prazen niz,
in želim, da bi bilo prazen niz, ko ni pritisnjena.
Če bom na ta način, lahko spremenite besedilo na gumb
takoj, ko je nekdo udari, ampak želimo povedati, ko je gumb samo sedel tam
Želim besedilo na prazno.
Na koncu bomo za inicializacijo desko,
in bom rekel, da je vse, kar je trenutno na 0,
tako da je ta svet člani nespremenljiva, je spremenljiva polja,
kar pomeni, da lahko pokličete addObject način in samo 0 notri.
To se zgodi, ko sem ustvariti novo igro.
>> Oglejmo si še enega.
Ta metoda tukaj je IBAction, da bo treba pritisniti
vsakič, ko pritisnete eno od teh kvadratov.
Zdaj imamo nekaj Tic Tac Toe logiko tukaj.
Ugotovimo, katere je na vrsti,
in na tej podlagi smo bodisi določi X ali O,
vendar smo opazili, da smo ponovno ta isti dogodek za obravnavo
Za vsako od teh gumbov.
To pomeni, da nimam način za zgornji levi gumb,
drugačno metodo za gumb spodaj desno, lahko pa se moram storiti.
To ne bi bilo res dobro oblikovanje.
Kaj delam tukaj je, da sem dejansko dogaja, da določi
Kaj je oznaka na gumb, ki je bil stisnjen je.
Ste opazili, da je ta igra metoda vzame en argument.
Imenuje se pošiljatelj in kaj je pošiljatelj pošiljatelj bo
predstavljajo točno tisto, kar je ukrepala na podlagi.
Če pritisnem na gumb, s pošiljateljem se bo, da UIButton
da sem dejansko pritisnil, to pomeni, da UIButton
ima oznako, ker sem ustvaril oznako.
>> Če želim, da se na oznaki, lahko sem le reči,
Želim oznako pošiljatelja,
in spet sem samo ulivali na UIButton.
Slučajno vem, da bo pošiljatelj je UIButton.
To pa ni vedno nujno, da je UIButton.
Lahko bi, na primer, registrirati isto za obravnavo dogodka
enega za enega gumba, enega za drsniku.
V tem primeru, vem, da so vsi gumbi, tako da bom povedal
Hočem, da je to gumb, nato pa lahko dobim oznako,
in z oznako Zdaj vem, kje sem znotraj odbora.
Potem lahko preprosto nastavite bodisi X ali O, lahko prezrcali na vrsti,
preveriti, kdo je zmagal, in tako naprej.
>> Vsa vprašanja v zvezi s tem sedaj?
V redu, vsi smo številka objavljene na spletu, ne želimo, da se v preveč
za Tic Tac Toe logiko, zdaj pa lahko vidite, da res
vsi delamo, je da smo zanka v tem polju,
tako da imamo nekaj za zank tukaj, in mi smo samo primerjavo za prikaz
imamo tekmo v vseh vrstah, podobno v koloni ali kaj podobnega.
V resnici vodi ta program, če se dotaknete enega od teh gumbov
da igra metoda je bila odpuščena, tako da pomeni, da sem ravnokar
Gumb za X, tako da bo zdaj na ta gumb bo O in tako naprej,
in da je, kako smo začeli sodelovati s to eno samo aplikacijo strani.
>> Bomo objavili kodo, zato vas prosimo, da se seznanijo z vsebino,
pa kaj je zdaj govoriti o nekaterih aplikacijah, ki so več kot le eno stran.
Tako razburljivo, kot Tic Tac Toe bilo veliko aplikacij znotraj iOS
so vrste teh vrtanje navzdol stvari z več zasloni.
Prvi koncept, da bomo morali govoriti o so protokoli,
in protokol je zgolj skupek metod
da lahko obljubim opredeliti.
Če sem ustvaril tega novega protokola z 2 metodami, ta prvi,
Če donos tip je nična, klicala sem ga foo.
To traja nobenih argumentov. Imam drugo metodo.
To vrne int. Poklical sem ga ovira, in to traja en argument.
Vse to je protokol, ki se imenuje SomeProtocol tu gor,
To je niz stvari, ki jih lahko nekdo izvajajo.
Nisem znotraj tega protokola povedal, kaj počne foo.
Namesto tega, samo pravim, da bi lahko določite foo, če želite.
Če sem ustvariti pogled upravljavca ali ustvarjanje razred
Jaz lahko znotraj tega razreda obljubo, da bo izvajanje
nekatere od teh metod, tako da na primer, če pravijo
to zdaj pravi, da delam obljubo, da vam, da v notranjosti
tega razreda pogled kontrolorja bom imel definicije tako za foo in bar.
>> Zakaj je to uporabno?
Veliko delov notranjosti za iOS izkoristiti to
design vzorec se imenuje delegacijo, in kaj pravi delegacija
je, da je, na primer, če imam polja z besedilom
in obstaja nekaj dogodkov, ki bi lahko registrirani znotraj mojega polje z besedilom,
namesto ustvarjanja ločenih dogodkov, kar lahko storim je, lahko rečem,
Delegat to polje z besedilom bo nekaj predmetov.
Ko sem rekel, da je to delegat zdaj to pomeni, da
ko bi bili nekateri dogodek odpustili v polju z besedilom
namesto da bi morali registrirati ali kaj podobnega
to je le, da bo poklical metodo za delegata.
Na primer, znotraj mojega polje z besedilom imam metodo, ko pritisnete
da narediti gumb v spodnjem desnem kotu,
in tako namesto registracije za obravnavo dogodkov, kar lahko rečem je
polje z besedilom, tukaj je cilj, ki ga želim vam, da pokličete metode na
Vsakič, ko nekdo pritisne gumb Končano,
in to pomeni, da je ta objekt ima nekaj za izvajanje protokola
, ki pravi, obljubim, da bom naredil, da se opredeli ukrepe gumb,
ker če ne opredeljuje to metodo in jo pritisnite Done,
potem se bo lahko zavajajoče.
>> Oglejmo si primer.
Tu sem le eno polje z besedilom,
in ena izmed lastnosti tega polja z besedilom, več o tem tukaj desni strani je delegat.
To je lastnost razreda.
Kar sem storil je, da sem tukaj, nadzor kliknili, in sem vlekel iz tega mesta tukaj
za ogled krmilnik, in ki pravi, da se zdaj delegata to polje z besedilom
se bo pogled na krmilnik.
To pomeni, da ko se nekateri ukrepi zgodilo, namesto registracije
ločene viličarji dogodek Želim si, da jih pošlje delegatu.
Zdaj pa si oglejte mojem mnenju upravljavca.
Znotraj datoteke. Ure sem obljubil.
Sem obljubil, da bo izvajanje nekaterih metod znotraj tega protokola
imenovano UITextFieldDelegate, in spet,
To je le nekaj seznam nekaterih stvari, ki jih lahko izberejo, da izvajajo.
>> Če bom prišel v mojo. M datoteko, ki sem jih izvaja en tak način.
Sklical sem jo textFieldShouldReturn
ker to je tisto, kar je bila imenovana znotraj protokola.
In zdaj, ko sem pritisnite gumb Končano znotraj tega polja z besedilom
To je tisto, kar se dogaja, da pokličejo, tako da nisem registrirati za obravnavo dogodkov.
Povezal sem delegata, in ko je odpuščen ta dogodek
To je metoda, ki se bo imenoval, tako da če sem prišel sem, da bi mi snemalno knjigo in jo vodijo,
medtem ko je nakladanje vidimo kaj sledi.
Na mojem zaslonu imam 2 stvari.
Imam besedilno polje, in imam to nalepko.
Jaz samo pravim, da želite, da se besedilo te oznake
da so enaki ne glede na Vtipkali v notranjosti polje.
Ta naslednji line tukaj je preprosto način, da kličem
na polje, ki pravi, želim, da skrijete tipkovnico.
To je le samovoljno način, da je Apple odločil.
>> Še enkrat, preden sem naredil vse, kar sem imel za žice vse gor, tako da sem prišel sem.
Z vidika upravljavca sem povlecite čez besedilnega polja.
Pustil sem šel, in sem lahko tukaj vidite, da sem lahko to lastnost besedilno polje
saj sem v pogledu krmilnik sem določeno lastnost
da je IBOutlet za polje z besedilom.
Ta pravi, da sem lahko priključite nepremičnino navzgor
na polje v svojem uporabniškem vmesniku.
Zdaj, ko sem kliknite na to lahko začnem tipkati.
Zdaj, če sem kliknite na gumb Done to se dogaja na ogenj
dogodek, ki lahko zdaj odzvali.
Brez rutine za obravnavo dogodkov.
Tako sem odgovorila na to opravljeno gumb.
Smiselno?
>> To ni design vzorec, da, morda ne boste nikoli našli sami
ustvarjanju lastne protokol, ampak samo vem, da nekateri
različne komponente iOS registracijo dogodkov na različne načine.
Gumbi, na primer uporabo teh IBActions.
Besedilna polja, na drugi strani pa se bo uporaba delegatov.
Vidimo lahko, in si lahko ogledate vse do notranjosti te dokumentacije.
Mimogrede, tam je pravzaprav tone stvari UI vgrajen v iOS za vas,
Tako, na primer, je tako, kot sem rekel, da je naredil v spodnjem desnem
I izbrali to polje z besedilom.
Prišel sem.
Jaz se pomika navzdol malo, da se vrnete ključ
in sem lahko dejansko narediti to cel kup stvari, kot če želim povedati, da je
Klic v sili namesto tega lahko storim to, kar je povsem naključno,
in ne vem, zakaj je vgrajen gumb za klic v sili,
vendar pa pravi, klic v sili, v resnici malimi črkami.
Tukaj imaš.
>> Zagotovo raziskati vse te različne možnosti v iOS.
Vsa vprašanja v zvezi delegatov?
Še enkrat, samo zanimiv design vzorec, da bi morali biti seznanjeni z.
V redu, naslednji si oglejte tabele mnenj.
Pogled tabele je v bistvu, da seznam predmetov, ki je po vsem mestu v iOS.
Ko ste lahkota skozi vse svoje stike, gledate
nastavitev strani, in da je vrsta seznamu stvari, ki se imenuje pogled tabel.
Izvajanje tabele pogled na iOS je zelo preprosta.
Namesto da bi v razredu, ki se spušča iz te UIViewController
tako kot smo naredili, preden smo preprosto morali reči ne
vse UIViewController ne želim storiti,
Rečem vse UITableViewController ne želim storiti,
tako, da preprosto dodaja nekaj dodatnih stvari, ki so v celoti naredil za nas.
Moramo storiti zelo malo, v bistvu izpolniti obrazec znotraj preglednice.
>> Za prikaz tabele moram odgovoriti na nekatera vprašanja.
Prvo vprašanje moram odgovoriti, je, koliko so oddelki v tabeli?
Ko ste brskanja po telefonskem imeniku spletne boste opazili, da je vrsta
organizira Ker potem boš imel BS, in imate, da se malo sub glavo.
Vsak od teh se imenuje oddelek.
Vi lahko ali pa ne potrebujejo teh.
Prva stvar, kar morate storiti je, da izvaja metode
imenovano tableView: numberOfSectionsInTableView.
To preprosto vrne, koliko delov imate,
tako da bi to lahko rekli vrne 1, če imajo eno veliko mizo pogled.
Naslednje vprašanje, ki iOS mora vedeti, koliko vrstic imaš?
Na primer, ste lahkota skozi pogledu tabele.
Imate določeno število pesmi, ki jo iščete ali na določeno število stikov.
Če si me, seveda, ni tako veliko,
in da je, kako iOS ve, koliko celic prikazati.
>> Še enkrat, to lahko pomeni nekaj podobnega zameno 3.
Moj pogled tabele ima 3 vrstice.
Končno iOS mora vedeti, kaj vsaka celica izgleda,
tako da tisto, kar je dejansko storil, je klic te metode tukaj,
To tableView: cellForRowAtIndexPath.
To se dogaja, da pokličete na ta način vsako posamezno celico znotraj vaše mize.
Kako to vem kolikokrat, da ga pokličete?
No, ti je to povedal v notranjosti število vrstic v oddelku.
Mi jo bomo imenovali to na vseh naših celic,
in znotraj tega je, kjer lahko dejansko narediti stvari, kot so
Nastavite besedilo ali povedati, kaj ta mali modri gumb na desni strani ne.
Vzorec za pridobivanje teh celic, bomo uporabili to metodo
imenovano dequeueReusableCellWithIdentifier.
>> Objective-C je dejansko zelo dobro znano, za smešno dolžino njihovih imen metoda,
in to je res lepo zgodilo v primeru točke.
Kaj je ta metoda pa je to le pravi, da želim, da mi celico.
Samo stvar iOS.
Če imate kaj takega 100.000 skladb na iPodu
kaj iOS ne želite storiti, je dodelila 100.000 celic,
ker če ste na vrhu seznama, pa je res treba dodeliti pomnilnika
za celico, ki je 99.000 vrstic navzdol?
Ne, ker, kot ste vi lahko pomikate vrste dodelijo kot greste skupaj.
To se naredi za vas.
Ni vam treba skrbeti za vse te neumne stvari uspešnosti.
Vse, kar ste rekli se kličeš to metodo dequeueReusableCellWithIdentifier,
in ta pravi, v redu, če želite bom ustvaril novo enoto za vas.
>> Ampak, če ste na dnu tabele in ste že dodeljene nekaj celic
Na vrhu tabele, ki si res ne bo treba kmalu
Bom dal eno tistih nazaj, namesto dodelitve novega,
in zato je to lepo uspešnosti skrb.
Če ne bi bilo treba nameniti celicah sami.
To se dogaja, da vam nazaj v celico.
To se dogaja, da se vrnete na vas mobilni objekt.
Ko imate mobilni predmet, ki ga lahko naredimo nekaj za to.
Nastavite lahko besedilo v celici s tem premoženjem, imenovano besedilo okolje.
Lahko dodam, da puščico na desni ali kakšno drugo naključno stvari
s to drugo premoženje pozval accessoryType, in tako naprej in tako naprej.
>> Oglejmo si na dejansko izvajanje pogled tabel zdaj.
Ko sem ustvaril ta projekt
kot pravi sam pogled na vlogo sem dejansko prišel sem
za uporabo v glavni podrobnosti, in tako v bistvu to ustreza mail app
na iPad z pogledu tabele na levi in ​​nato se vsebina na desni strani.
Na iPod ali iPhone se bo to ustreza enem pogledu tabele.
To je, če sem dobila zagon kode.
>> Naj najprej pogledamo na snemalno knjigo.
Vse to je bilo narejeno za mene, v bistvu ustvarjen.
Ta vrstica za krmarjenje mi je pokazal, kako lahko na primer celice videti,
in sem lahko dvokliknete to, spremenite naslov.
Vsi drugi pomisleki, UI bom zmogel tam.
Glava datoteke izgleda res preprosta.
Namesto da bi rekel je to UIViewController smo zdaj pravi, da je to
TableViewController, tako da vemo, da smo želeli poklicati vse te tabele metod.
Naslednja želim ustvariti lastnost, ki se dogaja, da zastopa
stvari znotraj moje mize.
Ta tabela se bo samovoljno prikaz
seznam sadja, zato moram ustvariti neko vrsto
, v kateri lahko vstavite sadove.
Znotraj mojega izvajanja datoteke prva stvar, želim storiti
Želim se prepričati sem inicializacijo to vrsto.
>> Rekel sem alloc pr ustvaril svojo sadno vrsto,
in sem dodal 4 stvari z njim, od katerih je ena veliko bolj sporen kot drugi 3.
In zdaj imam celo paleto velikosti 4.
Mi smo jo stresa v CS50.
Zdaj imam celo paleto velikosti 4.
Zdaj bom začel odgovorih na ta vprašanja, in dejansko,
ko sem ustvaril ta program je bilo vse to že storil zame.
Nisem imel vnesti navedeno število oddelkov v pogledu tabele.
To je bil že tam, jaz pa izpolnite prazne.
Koliko oddelki imam?
Ena. Vse opravljeno.
Koliko vrstic imam?
No, jaz imam eno vrstico za vsako sadje, zato je to število
je lastnost vsake matrike, ki pravi, kako velik je?
To je, koliko vrstic imam.
Na koncu moram reči, kaj vsaka celica videti?
Jaz bom rekel dequeueReusableCellWithIdentifier.
>> Spet je bilo to že napisal zame.
Nisem moral to storiti sam, in želim, da bi dobili nazaj
ta celica na tej lokaciji.
Ne pozabite, da smo kličeš to isto metodo na vsako posamezno celico,
in ta argument tukaj, ta argument indexPath,
Kaj pa pravi vrstica sem noter
Če rečem, indexPath.row tukaj
to bo 0, potem bo 1, potem bo 2, in to ne vem
kaj celica Jaz sem trenutno na zaslonu.
Rad bi postavil besedilo celice prek te nepremičnine textLabel
iti v mojo sadja in dobili niz
objekt, ki ustreza vsako vrstico.
Če je to niz, sem sedaj določa
Besedilo nepremičnine v niz.
Lahko naredim še eno stvar.
Jaz se lahko prijavijo za obravnavo dogodkov na vsako od celic,
Ko sem izkoristiti vsako od teh celic
To didSelectRowAtIndexPath, to se dogaja, da se imenuje za mene,
Tako preprosto z določitvijo to lahko sedaj ravnati, kaj se zgodi
ko pritisnete celico in spet smo mimo, v kateri je izkoristiti celic
tako da smo ponovno ta isti trener dogodek za vse naše celice.
>> Tudi to je nekaj, iOS dela za mene.
Naj se prikaže drugo siten ljudstvo
, ki preprosto pravi, da si si izbrala nekaj, kjer da nekaj
se bo vrsta objekta.
Ko sem teči to, da bom, da je to lep pogled tabele
z eno vrstico za vsako od teh sadja, in če sem se dotaknite 1
to mi pove, kaj se je zgodilo.
Smiselno?
Zgradimo malo bolj zapletena od app,
toliko, kot si izbral tako, da kliknete paradižnik je.
Lepo del o storyboarding
se je ne samo nam bo pomagal oblikovanje zaslonov posamično,
Prav tako nam bo pomagal povezali našo celotno aplikacijo,
tako da končna ca bomo Stavba je to lepo športne novice bralec,
in zato se dogaja, da imajo več zaslonov, in da bom lahko dejansko predstavljajo
vsaka od teh več zaslonih na snemalni knjigi
in sem lahko povečate, in glej moje aplikacije na visoki ravni.
>> Da bi ustvarili nov element znotraj mojega snemalno knjigo
to je zelo preprosta notranjost Builder vmesnika.
Če želim dodati še eno zaslon za to, na primer,
Jaz lahko najprej pomanjšati s ščepcem zoomom, da Apple ljubi tako zelo,
in dol, preden sem poiskal na gumb
in sem povleci in spusti gumb
če želim ustvariti nov zaslon, lahko dejansko samo povleci in spusti
Celoten krmilnik pogled, tako da če sem izbral ta, ga potegnite tukaj,
hej, tam je še en zaslon, zato zdaj s to isto storyboard slika
Lahko imam vse zaslonov znotraj moje app, in lahko pomanjšate
in videli, kako med seboj sodelujejo.
To še ne bo interakcijo.
Način, na katerega so ti zasloni 2 interakcijo je definirati odnose.
Lahko v bistvu pomeni ta zaslon, ko pritisnete na ta gumb,
Želim si, da zdrsne v tej novi zaslon.
To pomeni, da je ta vrsta odnosa med
Prvi zaslon in drugi zaslon.
Boste v bistvu ima puščico, od tega gumba na drugem zaslonu
pravijo, da ko pritisnete na ta gumb, da je, če hočem.
Tako kot smo krmiljenja kliknete in vlečete za opredelitev trgov
bomo narediti isto stvar za opredelitev teh segues.
>> Bomo videli zgled za to, in preden smo dejansko prehod
iz enega zaslona na drugega iOS je dovolj prijazen, da pokličete to metodo
imenovano prepareForSegue, in to je, če lahko začnemo
pošiljanje podatkov iz enega v drugo aplikacijo.
V primeru, da smo na tem, da pogled na to bo v bistvu nam omogočajo
za filtriranje baseball ekipe, ki jih lige in delitve.
Ko sem izberete ligo, na primer, želim, da prehod
v mojem naslednjem zaslonu, kjer lahko prikažete vse oddelke
v tej ligi ali vseh različnih ekip.
Moram poslati tem zaslonu, kaj ekipe morate prikazati.
Če želite to narediti, da bom izkoristil te metode tukaj.
>> Končno, samo naključna točka na iOS.
Če želite shraniti podatke pa je to stvar, ki se imenuje temeljni podatki,
ki je pravzaprav nekako zapleteno delati.
Prav tako lahko uporabite SQL za shranjevanje podatkov,
, ki je spet lepo, ampak nekako na bolj zapleten strani delati,
ampak iOS podpira tudi to res kul stvari, imenovane lastnine navaja,
in premoženje seznam je samo datoteka, ki predstavlja ključne parov vrednosti.
Ti določajo seznam tipk, in vi pravite na to tipko se bo matrika.
Ta ključ se bo niz, v bistvu vse, kar lahko
V JSON lahko počnejo na nepremičnine seznama
in zato je to res lepo nam omogoča delo z nekaterimi podatki.
Na primer, imam Teams.plist, ki sem jo ustvaril.
Ustvaril sem novo PLIST datoteko in sem lahko v globino.
To je slovar, to je slovar, so strune,
in zato je to lepo grafični prikaz listine JSON
ali samo nabor ključnih parov vrednosti,
in tako to je podatek, da bom delal z mojo notranjost cca.
>> Naj prvi pride sem. Imamo veliko več datotek sedaj.
Ampak kaj je prvi pride sem v snemalno knjigo.
Storyboard tukaj, če mi pomanjšati-
Sedaj lahko vidimo, da je to tok moj app.
Jaz sem jih prej začeti na tem zaslonu.
Bom vrtanje navzdol na tem zaslonu
in bom vrtanje navzdol na tem zaslonu, in bomo lahko tukaj vidimo, da če sem nekako
premakniti eno od teh, ki smo jih okoli te puščice gredo od tu do tu,
in tako sem določiti, da je bila puščica, če se približate malo,
in če sem prišel na ta pogled upravljavca,
in tukaj je celica, želim povedati, da ko se dotaknete celico
Želim si, da zdrsne na drugo zaslonu.
Lahko preprosto držite nadzor,
pomaknete preko malo, držite nadzor, povlecite celico znova in spusti.
>> In tukaj govorimo, kaj je prehod, ki ga želite uporabiti?
Ali želite uporabiti to slide stvar, ki se imenuje pritisk?
Ali želite, da zdrsne od spodaj navzgor?
Temu se reče prenosa.
In ko sem kliknite eno od teh, da se bo pripraviti na to puščico za mene,
kar pomeni, da sem dejansko obravnava, kaj se zgodi, ko pritisnem na ta gumb grafično.
Nisem napisati kodo, da dejansko potegnite iz enega zaslona na naslednjo.
Jaz to opredelil vizualno znotraj Builder vmesnika.
Če sem kliknite na to puščico, lahko vidimo, da sem dal to stvar ime.
Poklical sem ga showDivisions, in to je, da bom lahko vedel
Kaj prehod se bo zgodilo, pa bomo videli, zakaj v samo trenutek.
Tako sem ožičen različne zaslone v moji app.
Če bi bilo to tipko, na primer, ne pa pogled tabele,
Lahko nadzor, kliknite na gumb, povlecite prenesejo v naslednji zaslon,
in to je, kako lahko naredim, da navigacijsko pot.
>> Res hitro, če pridemo v MasterViewController,
še enkrat, bomo preprosto bo, da se opredeli seznam stvari,
, ki bo prikazan v pogledu tabele.
Tu govorim Želim si, da to PLIST datoteko
in želim, da ga naložiti gor v slovarju,
in ko ste to zbirko, bom odgovoriti na ta ista vprašanja znova.
Tu je število oddelkov.
Ena pa je ena vrstica za vsako ligo, in besedilo vsake celice
morajo biti bodisi prvo, 1. liga, 2. liga, in tako naprej.
Končno bom uporabo te metode, da smo videli samo z imenom prepareForSegue,
in to je način, da se dogaja, da se izstreli ko kliknem
na eni od teh vrstic in zato aktivira ta prehod
da sem ustanovljen s puščicami.
To se pravi, da sem lahko več
odnosi z enega zaslona na drugega.
Če imam 2 gumboma in vsak gumb vas popelje v drug zaslon
Jaz bom imel 2 segues, 1 za vsak gumb.
Ampak to je prepareForSegue spet bo treba ponovno
za vsako od različnih razmerij, to pomeni, da moram pot
identifikacije, če pritisnete gumb za 1. ali pritisnete drugi gumb.
>> Se spomniš, ko sem dal tej segue ime, to showDivisions,
Tako sem zdaj vem, da je to segue, ki je bil aktiviran.
Vse, kar želim storiti, je, hočem reči,
Želim, da ugotovimo, kaj sem zadel,
in tako priti, da lahko rečem, da hočem indexPath za izbrano vrsto,
Spominjam se indexPath samo pravi, če sem kliknil,
in potem hočem povedati želim, da ugotovimo, kam grem.
Ta destinationViewController, ki je last segue.
To je zaslon grem,
zato vem, da je zaslon bom pozval DivisionsViewController
ker sem ustvaril ta razred,
in sedaj, če rečem d.divisions
Sedaj sem z določitvijo lastnost ogled krmilnika sem o kraju.
To je, kako sem pošilja podatke iz enega zaslona na drug zaslon.
>> Tako si ogleduje ta DivisionsViewController
si lahko ogledate tukaj, da je v datoteki. h
pa je, da je premoženje oddelki, in to je tisto, kar sem v bistvu poselitve,
tako, da je, kako sem vedel, da bom prikaz delitve, ki ustrezajo
liga, da sem kliknil, in spet,
Dejansko miza, izgleda precej enako, le odgovor tistim
3 preprostih vprašanj, kot tudi prepoznavanje
kaj se zgodi, ko se premaknete na naslednji zaslon.
Samo nekaj drugih stvari tukaj.
Ste opazili, na vrhu tukaj, da ne pravim # include
Zdaj sem rekel # uvoziti.
To je samo Objective-C stvar.
Uvoz je v bistvu lepše različica vključujejo,
in, na primer, moramo vedeti, kaj je to razred,
tako da ne morem reči, DivisionsViewController.
Če nismo hashtag standardio.c znotraj naše datoteke. C
prevajalnik imel pojma, kaj je bilo printf.
Podobno, če ne uvažajo DivisionsViewController
prevajalnik res nima pojma, kaj je DivisionsViewController.
Samo poskrbite, da znotraj vaše različne. Datotek m ste prepričani, da za uvoz
ustrezna. h datoteke, tako da prevajalnik ne ve, kaj se dogaja.
>> Končno, kaj Apple na koncu pa je prikaz nekaterih podatkov prek spletnega pogled,
in tako spletno pogled je objekt, v katerem lahko vključite
Malo spletni brskalnik znotraj vašega programa.
Vse kar morate storiti je, da predloži URL v spletni brskalnik,
zato želim iti v mlb.mlb.com,
in to je, kako lahko dostopate na domači strani za vsako ekipo,
in tako, da gre v tem URL-ju
Spletna pogled lahko prikažete to zame, in sem lahko okoli brskanje,
in simulator je v uporabi ta.
No, to pa mi je PLIST.
Če sem kliknite to tudi to pa mi je PLIST, in to drsenje bil obravnavan
Z opredelitvijo teh segues.
I kliknite to in še eno,
in zdaj je moj UIWebView, tako da kar tako
Tukaj je spletna stran za URL, da sem vključen,
in nisem imel ničesar za obravnavo norega.
To je, kako prikazati spletne strani.
Stvari, kot je ta zadnji gumb tukaj so tudi z mano
popolnoma brezplačno, ker sem te odnose s pomočjo opredeljena segues.
>> Kakšno vprašanje? Ja.
[Študent] Torej, če uporabljate alloc, ne boste nikoli več prostega kaj?
Točno tako, ko kličem alloc in pr vam ni treba sprostiti.
IOS bo ročaj vse to za vas.
To je čudovito, in ti ne kršijo nobenih pravil. Ja.
[Študent] Če bi vključili več ekip, ki bi ustrezali na zaslonu,
bi bilo avtomatično pomikanje možnost, ali je to nekaj, kar morate dodati?
Točno tako, če bi imel več skupin, na primer, bi to avtomatično ročaj
pomikanjem za mene, in vsi pomisleki uspešnosti
z veliko mizo tudi ravna povsem zame.
>> Druga vprašanja?
Vse to oznako se bo objavljen.
Mi nekako prezrli malo bolj manjših podrobnosti,
vendar stvari, kot določa nekatere lastnosti na spletni mnenju
so samo stvari, ki jih lahko dobite z brskanjem dokumentacijo Apple,
, ki je zelo, zelo lepo urejeni.
Imajo veliko vzorčnih aplikacij in primer običajih
različnih API-jev, tako da zagotovo seznanijo z vsebino tistih, če lahko.
Tako bi lahko nekaj koristnih povezav, ki jih želite, da pogled na.
To je le nekaj priročnih dokumentacija navodila.
URL-ji so velike, tako da si skrajša.
Ta prva je celotna knjižnica dokumentacije.
Še malo palice iskanje, tako da če začnete tipkati gumb
bo začela vam daje vse informacije o vseh stvareh, ki jih lahko storite z gumbom.
Jaz sem tudi za programiranje pogledu tabele Guide.
Skrbi tabele stališča precej bolj podrobno,
kako narediti stvari, kot so dinamično dodate celice ali celice, urejanje ali odstraniti.
>> Obstaja veliko vzorčnih aplikacij od Apple, ki vam bo pokazal, kako to storiti,
in nazadnje, ta zadnja je vmesnik človek smernice
in to je v bistvu pogovor komponent uporabniškega vmesnika,
stvari, kot je, ne da bi gumb, ki je 4 točk za 4 pik.
To je slaba ideja, in druge stvari, ki jih Apple želi, da narediš
spodbujati dobro oblikovanje.
>> Kakšne zadnje vprašanje, preden bomo zaključili do?
V redu, vsekakor vas prosimo, da sva-se dogaja, da imajo posebne oznake na razpravo.
Bomo imeli iOS 1, tako da zagotovo vas prosimo, da izkoristijo to.
Če želite delati s svojimi sošolci na projektih
ali pomagajo ugotoviti nekaj naključnih stvari iOS
vas prosimo, da email mi in zagotovo skrbno pregledati vse kode na spletu, saj
samo v interesu takrat, ko smo nekako prezrli več
lepši zrnata podrobnosti o stvari.
Ampak, če ne, potem veliko sreče na vaše projekte iOS, in upam, da bomo imeli
Velik priliv aplikacij v App Store.
[CS50.TV]