>> RHED SHI: Benvenuto vedi CS50 seminario -
Introduzione a iOS.
Grazie a tutti per essere venuti.
Spero che tu sia altrettanto entusiasti come io sono su iOS.
L'anno scorso, ho preso CS50 come un sophomore, e ho praticamente imparato iOS per il mio
progetto finale.
Ed era abbastanza -
bene, non è stato facile, ma ci sono un sacco di tutorial di supporto online.
E spero davvero che con questo seminario, ti darò ragazzi una testa
avviare lo sviluppo iOS
>> Quindi, in termini di sviluppo iOS, ci sono due cose principali che
voler coprire oggi.
In primo luogo, il linguaggio -
la lingua sarà in Objective-C. Ci sentiamo davvero
qualcosa di veramente eccitante.
Quindi, è possibile unire tutta la Mela comunità di sviluppatori e costruire qualche
applicazioni davvero impressionante.
>> Inoltre, iOS 7 è bella, si spera, per alcuni di voi.
Ma è discutibile, lo so.
E soprattutto, quello che voglio fare è di guida attraverso Objective-C, e anche
Xcode, che è integrata ambiente di sviluppo che sarete
lavora in per iOS.
>> E così, solo una parola su Objective-C. Fondamentalmente, è esattamente lo stesso come C,
ma con un sacco di altre cose.
E così, più propriamente, in realtà è un super-set di C. Quindi, tutto ciò che si
può fare in C in questo momento, che è fondamentalmente come pset 0 a 6, si
può fare in Objective-C.
>> Quindi, non aver paura di questo nuovo lingua che si sta andando a imparare.
Hai già coperto un sacco di esso, perché hai tutto fatto C lo scorso
semestre, solo che adesso si sta andando per avere molto di più per lavorare.
E sto solo andando a condurre l'utente attraverso un paio di esempi per evidenziare alcuni
delle principali differenze che ho trovato erano molto importante quando ho imparato
Objective-C lo scorso anno.
>> Ebbene realtà, così, l'altro punto è, Objective-C è, ovviamente,
object-oriented.
E parleremo un po ' su che cosa significa più tardi.
In sostanza, è come come hai lavorato con struct in questo pset passato, con
nodi e altri simili cose del genere.
Tranne che, in Objective-C, tutto è un oggetto, e si sta andando ad essere
passando intorno puntatori a oggetti piuttosto che i valori stessi.
Quindi, è solo qualcosa di importante da tenere a mente.
>> Allora, perché non iniziamo con un paio di differenze di sintassi tra C e
Objective-C?
Voglio evidenziare il # include, si sapere, io.h standard C e C + +, con
la versione Objective-C di quella, che è # import, e quindi una sorta di
file di intestazione.
In questo caso, sarebbe UIKit, sai, tagliare UIKit.h.
Potrebbe anche essere, sai, MKMapview a voi slash MKMapview.h se si desidera
per fare, come, una mappa all'interno della vostra applicazione.
Cose simili come tale.
>> Quindi, la cosa importante è includere ora ha cambiato da importare.
Ma l'idea rimane.
Stai andando a essere importatrice qualche tipo del file di intestazione nel vostro programma.
>> Voglio anche sottolineare la differenza tra printf e NSLog.
Tuttavia, come abbiamo già detto, Objective-C è un severo super-set di
C, il che significa che esiste printf in Objective-C, troppo.
Ma la maggior parte delle persone non usano quella.
Molte persone utilizzano questo NSLog perché ti dà un timestamp, e vedremo
in azione successiva.
Ma, è generalmente una più utile modo per stampare le variabili.
>> E voglio anche sottolineare che NSLog prende proprio nello stesso
valori segnaposto come printf fa -
così% d è per un int, % F è per un galleggiante.
Tuttavia, voglio sottolineare questo ultimo -
NSLog% a sign -
che è un segnaposto per un oggetto.
E come ho detto in precedenza, le offerte di Objective-C più o meno lo più in oggetti,
e quindi questo arriverà in uso quando si vuole stampare, forse, forse un
NSArray, o NSDictionary, o un NSString.
>> Così, inoltre, notare che, nel nostro NSLog affermazione, abbiamo un a segno davanti
della citazione -
vale a significare che le stringhe, ora, in Objective-C sono oggetti.
Non sono più stelle semplicemente char.
Sono oggetti e sono trattato come tale.
>> Quindi, è davvero importante che quando si utilizza NSLog prende in NS
stringa, il che significa che dovrete per includere un a fronte del
virgolette.
Ed è per questo che si vede, qui, in tutte le la mia funzione chiamate a questo NSLog, ho
avere a fronte delle citazioni, anche se la% d e f di% sono
tutti uguali da C.
>> Tutte le domande finora?
Cercherò di passare attraverso questa fretta così che possiamo avere più tempo per lavorare
con Xcode e Objective-C, in modo che voi potete ottenere di più
familiarità con esso.
>> Avanti, voglio evidenziare qualcosa concettualmente importante.
Quindi, in C, la maggior parte delle cose sono funzioni.
Facciamo una chiamata di funzione.
Dichiariamo funzioni in questo modo, con digitare il ritorno, poi la
nome della funzione, tra parentesi, e quindi qualunque argomenti e il tipo di
questi argomenti vogliamo passare dentro
E Objective-C, perché tutto è un oggetto o una classe -
così classe e oggetto sono due termini che sono per lo più sinonimo con l'altro,
così io li usa in modo intercambiabile tutto il seminario.
>> Ma, vedrete che abbiamo metodi Objective-C, piuttosto che funzioni.
E metodi appartengono agli oggetti.
Così come, magari prendere per esempio, il nodo -
il nostro tipo [incomprensibile]
nodo da pset 6 o 5 -
abbiamo la parola, la proprietà, o il puntatore nodo successivo.
I metodi sono semplicemente funzioni all'interno di una sorta di struttura.
>> Quindi, in questo caso, la struttura sarebbe l'oggetto, e quindi il metodo è
qualcosa che appartiene a un oggetto.
Ed è così che si dovrebbe dichiarare, sorta di, un metodo.
Si potrebbe cominciare con, ancora una volta, il ritorno tipo - così, ho cercato di colore
codificare le parole chiave qui in modo che voi ragazzi può vedere l', almeno, la formattazione
somiglianze tra funzione dichiarazioni e dichiarazioni dei metodi.
Quindi, si inizia con, sai, un ritorno tipo - in questo caso, si tratta di un array, o
un puntatore NSArray -
e poi hai questo metodo.
E poi, ciò che è interessante qui è che invece di avere parentesi, abbiamo
avere questi due punti.
E poi, davanti ai nostri argomenti, abbiamo mettere, ancora una volta, tra parentesi il tipo di
del nostro ragionamento.
>> Così, adesso sto cercando di fare il confronto tra, sai, n e
numero, perché sono entrambi interi come.
E poi, l'altra è un tipo NSUInteger.
E poi, con Objective-C, quando si vogliono avere più argomenti
la vostra clausola metodo, è, una sorta di, separarli fuori un po 'come questo -
Io non sono molto sicuro come descriverlo, ma questo è un buon esempio di come si
può avere più argomenti in là.
>> Si potrebbe, naturalmente, proprio tutto ignorare il colon andArray NSArray
matrice se si voleva solo un metodo che prende in un argomento.
Sì, domanda.
>> AUDIENCE: sono entrambi NSUInteger e NSArray argomenti che possono essere adottate in
all'interno del NSArray?
>> RHED SHI: sì.
Quindi, lasciatemi spiegare.
Quindi, sì.
Quindi, la domanda era sono NSUInteger e NSArray * tipi di argomenti,
e questo è corretto.
Quindi, si vuole sempre di specificare quali il tipo di argomento è.
E qui, sto cercando di presentarvi ad alcune delle sintassi e vocabolario di
Objective-C, quindi quelli sono tipi effettivi che avrete a che fare con.
>> E come noterete, array non sono più, una sorta di,
semplici cose staffa.
Sono oggetti.
Anche se, se andiamo alla prossima diapositiva, possiamo vedere che possiamo
hard-code un NSArray in Objective-C con semplicemente un simbolo a fronte di
le staffe.
Io non sono, in realtà, del tutto sicuro se I sintatticamente hard-coded un array
correttamente per la versione C, ma che è dovrebbe essere in una matrice C.
>> Quindi, questo è come si dovrebbe, si sa, forse utilizzare le funzioni o le
metodi che abbiamo creato in precedenza.
Giusto?
Quindi, questo è dove noi dichiariamo la nostra funzione e il nostro metodo.
Ed ora vogliamo usarli in nostro programma, e questo è
come vorremmo farlo.
Quindi, in C, si avrebbe, sai, forse, un bool b, e si imposta
eguagliare la funzione, e poi si passa negli argomenti.
>> In Objective-C, è piuttosto la stessa cosa.
Hai NSArray * my_array, ed è andando ad eguagliare - ora, l'unico
differenza qui è questo oggetto cosa, che ho evidenziato in giallo, e
come si può vedere, in C, non c'è nessun altra parola giallo.
Ed è perché i metodi appartengono con un certo oggetto.
Ecco perché ho bisogno di avere un oggetto che, in una sorta di, chiama questo metodo su
il numero zero, e poi la NSArray a, b, c, d.
Hai domande su questo?
>> Vedremo questi concetti in azione abbastanza presto quando andiamo in una demo.
OK.
Ora, voglio parlare un po 'breve su Xcode 5, che è la
ambiente di sviluppo integrato che lavorerete con.
So che molti di voi, o alcuni di voi, non hanno Mac, che è un problema
perché Xcode non è disponibile per Windows e PC.
Non chiedetemi perché, ma probabilmente -
sì, aziendale.
Qualunque cosa.
Ma comunque, così, mi scuso se alcuni di c'è bisogno di scaricare una sorta di
macchina virtuale per Mac Per eseguire Xcode 5.
Ma è un piuttosto carino software da utilizzare.
>> E così, prima di tuffarci in qualsiasi tipo di demo, voglio solo visualizzare
foto di ciò che Xcode assomiglia in finestra, e poi parlare anche di
ciò intero questo spazio è.
Quindi, è un po 'come imparare a utilizzare Microsoft Word, salvo che si desidera
familiarizzare con tutte le cose diverse che
stanno succedendo qui.
>> Quindi, prima, voglio puntare alla barra degli strumenti in alto.
Vedrai che, in alto, avrete il nome del file -
o, in realtà, il nome del progetto e poi il nome del file.
Prendere nota del gioco e i pulsanti di arresto.
Questi sono quelli che sarete in usando per eseguire l'applicazione sul
simulatore -
il simulatore iOS.
Questo avviene automaticamente con Xcode 5, in modo da non dovete preoccuparvi di
il download di una sorta di simulatore.
Basta premere play e poi corre tua app.
E si può giocare con voi, e vedrete come funziona tardi.
>> E poi, al centro, naturalmente, è in cui tutto il codice bello è
per andare.
E poi, sul lato sinistro, ti avere questo, una sorta di, cartella -
navigazione -
e poi, si vedrà anche che, insieme con l'icona della cartella, ci sono un
mucchio di altre icone lì che sarà utile in seguito.
>> E poi, sul lato destro è un'utilità zona dove si può lavorare con
alcuni degli oggetti e specificare, si sapere, che cosa il colore deve essere, cosa
il carattere del testo dovrebbe essere, et cetera.
Anche se, tutto quello che fate nella zona di servizio, è possibile
fare in codice pure.
E così, andrò attraverso due esempi di utilizzo, semplicemente, nessun codice a
tutti - o codice molto minimale -
versi tutto il codice, così che voi ragazzi sa cosa si può e non può fare a
Xcode e Objective-C.
>> E poi, infine, giù in fondo, si ha la zona di debug.
Quindi, non è più necessario eseguire GDB, et cetera, sui programmi.
Lo fa automaticamente per voi.
E si può anche stampare roba da questa zona.
Quindi, in realtà, più tardi, andremo attraverso mario.c, se voi ragazzi ricordano ancora
che, in Xcode.
Così che dovrebbe essere divertente.
>> E poi, giusto per riportarlo a Objective-C, voglio evidenziare quello che
si può fare con se dichiarazioni.
Quindi, sai, perché Objective-C è un superset del C, tutto quello che fai è,
letteralmente, lo stesso C. Basta lievi differenze.
Quindi, si noterà la forma di un se affermazione è sempre la stessa - avete
se, e poi ci sono le parentesi con una condizione all'interno di, e poi
le parentesi graffe per quello che voglia di fare all'interno di lì.
>> Tuttavia, ho voluto mettere questa diapositiva in su qui, semplicemente per illustrare che,
perché abbiamo a che fare con gli oggetti ora, dovremo usare queste cose
chiamato così, è pari a stringa, che è, casualmente, un metodo di un
stringa o un oggetto NSString.
Quindi, parola, in questo caso, è un NSString oggetto, ed ha un metodo chiamato è
pari a stringa, e poi stiamo passando in una stringa hard-coded vedere
se quelli sono uguali l'uno all'altro.
>> Tutte le domande finora?
OK.
E, voglio andare oltre una per anche la dichiarazione.
>> Così, per esempio, se volessimo ciclo sulla lunghezza di una stringa in C, questo
dovrebbe essere familiare a voi.
E, in Objective-C, che voglio evidenziare questo, una sorta di,
metodo chiamato conteggio.
Beh, in realtà, mi permetta basta prendere quella posteriore.
Count è un metodo di matrice.
Tuttavia, è più precisamente un proprietà di matrice, è per questo che
può utilizzare la notazione del punto.
Ma io non voglio entrare troppo questa roba concettuale, voglio solo
per mostrare come le cose sarebbero come in Objective-C rispetto a C.
>> E poi, voglio sottolineare che anche se ho usato NSUInteger
di fronte a tutti i miei i di in Objective-C, è anche possibile utilizzare int, int perché è
totalmente valide in Objective-C, anche.
Sì?
>> PUBBLICO: E 'solo stilistica, o è -
>> RHED SHI: Già.
Quindi, come si vedrà -
così, la domanda era che solo una questione stilistica.
Come vedrete, ho una, sorta di, stella asterisco cosa giù in fondo, e
che link rimanda a uno Stack Overflow formare, dove qualcuno spiega
la differenza tra un int in NSInteger e NSUInteger.
E così, si può leggere più tardi.
Queste diapositive saranno, naturalmente, a vostra disposizione.
>> Vediamo.
OK, impressionante.
Quindi, questo è anche incluso nella diapositiva perché ho pensato che questo era un ottimo
sito web che si presenta alla sintassi Objective-C.
Quindi, in realtà, perché non ci muoviamo a Chrome e controllare questo sito?
>> Giusto.
Quindi, quello che voglio mostrarvi ragazzi qui è questa immagine.
Quindi, questo è, più o meno, sarà quello si sta andando a vedere all'interno di qualsiasi
File di Xcode.
In realtà, perché non ci basta prendere un momento, una sorta di, prendere questo dentro
>> Quindi, questo libro -
che è l'oggetto che abbiamo a che fare.
E allora, è, ovviamente, sarà ereditato da qualche altro oggetto, ma
non dovete preoccuparvi di questo.
E poi, forse, ha alcune variabili membro.
>> La cosa importante che voglio mostrarvi sono i metodi di istanza, qui.
Quindi, metodi di istanza sono indicati da questo segno meno.
E poi, come si noterà, siamo già iniziando a vedere il paradigma
per dichiarazione di metodo, giusto?
Il tipo di ritorno, il nome del metodo, e poi il tipo di argomento, e
quindi il nome dell'argomento.
E questo segno meno significa che si tratta di un metodo di istanza, il che significa che
questi metodi sono disponibili solo per oggetti che sono stati istanziati.
>> Per contrasto, che metodi con un plus segno di fronte a loro sono classe
metodi, il che significa che è possibile chiamare questi metodi, anche se non si dispone di
un oggetto ancora creata.
Così, per un chiaro esempio, NSString è una classe.
E si può chiamare, per esempio, metodi della classe di NSString -
l'attuale, come, parola NSString.
>> Tuttavia, al fine di utilizzare questi metodi, è in realtà
necessario creare una stringa.
Ad esempio, stella stringa NSString uguale a virgoletta, ciao mondo.
E poi, è possibile utilizzare questi metodi -
metodi di istanza -
su tale stringa mondo ciao.
Quindi, questa è la differenza tra metodi di istanza e metodi di classe.
>> E, abbiamo appena coperto questa parte.
Le proprietà sono un'altra cosa che sono all'interno di oggetti, sostanzialmente.
E li dichiara con la parola chiave at struttura.
Avete queste opzioni, qui, che spiegherò più avanti, quando
andiamo in una demo.
Sì?
Ciao.
>> AUDIENCE: Potrebbe zoom, per favore?
>> RHED SHI: Oh, sì.
Scusi.
>> AUDIENCE: Grazie.
>> RHED SHI: Questo dovrebbe essere molto meglio.
>> AUDIENCE: Già.
Grazie.
>> RHED SHI: Sì, vi prego di ricordare se Mi dimentico di ingrandire o rimpicciolire.
Quindi, questo è tutto quello che volevo visualizzare per -
whoa, che è molto -
per questo sito.
Allora, torniamo alle nostre diapositive.
>> In realtà, ora facciamo un attimo per tuffarsi in una demo.
Così, inizieremo con un nuovo progetto Xcode.
Quindi, se ti apre Xcode su tutti le macchine, si dovrebbe prendere qualche
pagina in cui si dice, come, sia aperto di un progetto esistente o un nuovo
progetto, e si dovrebbe fare clic su un nuovo progetto.
E poi, dovrebbe richiedere a questa schermata.
Sì?
>> AUDIENCE: Se non abbiamo un Mac, abbiamo solo tipo di raffreddiamo?
>> RHED SHI: Or guardare con qualcuno, sì.
Già.
È possibile rilassarsi, troppo.
OK.
>> Allora, che cosa stiamo andando a fare prima, ora, è, in realtà, stiamo andando a fare un
domanda unica vista.
Quindi, se noterete, ciò che è grande su Xcode e il supporto Apple per
Gli sviluppatori è che hai un sacco di modelli per lavorare con già.
Si potrebbe, per esempio, fare un applicazione master-detail.
Si può fare un gioco -
e in realtà, io non entrerò nei giochi, perché i giochi sono una storia diversa
per lo sviluppo iOS.
E stanno sorta di separazione, così io non entrerò in quello.
>> Allora, avete basato page applicazioni.
Si dispone di un'applicazione scheda -
così come, per esempio, Bank of America Probabilmente ha, come un app schede.
Si tratta di quelli in cui avete i pulsanti nella parte inferiore.
E poi, avete un kit di gioco Sprite.
>> Oppure si può lavorare da zero, che è quello che faremo in seguito.
Ma andiamo, in primo luogo, iniziare con una singola applicazione vista.
Poi, sarà chiedere il nome del prodotto, e possiamo solo fare test.
Nome dell'organizzazione -
così, il nome dell'organizzazione, azienda identifier -
quelli sono importanti se si sta andando per mettere la vostra applicazione su App Store.
Oltre a questo, il codice sta per eseguire assolutamente bene senza questo.
>> Ciò sta andando essere importante se si vuole - così, di per sé, come, mettere la vostra app
sul vostro telefono o qualcosa del genere, e prova fuori, si sa, nella vita reale -
questo sarà importante.
Questo tende ad essere di solito associato una sorta di account sviluppatore
con Apple.
>> E così, lo so, probabilmente, molti di voi non avrà alcun account sviluppatore.
So che l'università ha uno.
Penso CS ha uno.
Ma, potete scrivermi e io provare per capire che per voi.
Ma in questo momento, ho appena messo in alcune cose segnaposto qui.
>> E si può, ovviamente, qui, scegliere se si vuole che sia solo in
iPhone, in iPad, o entrambi -
applicazione universale.
Quindi, per ora, facciamolo universale, basta vedere entrambi i lati della piattaforma.
>> Vediamo.
Così, in questo momento, sto andando a salvare in una sorta di cartella.
Non importa dove - si può sempre spostare in un secondo momento.
E, ora, siamo portati al nostro progetto Xcode.
Io non mi preoccuperei di tutto questo.
Vorrei suggerire che non tocca nessuna delle questo, se non sai esattamente cosa
si sta facendo.
Quindi, tutto questo, basta ignorare per la maggior parte.
Non avrete bisogno di toccarlo, e se fare sbagli alcune cose qui,
diventa un po 'difficile.
>> Allora, perché non guardiamo i file sul
lato sinistro nel nostro navigatore.
Qui, abbiamo AppDelegate.h.
Abbiamo AppDelegate.m Quindi, come avrete avviso, abbiamo intestazione dei file, che
concluderà nel punto h, e abbiamo attuazione -
in realtà, mi permetta lo zoom dentro
OK.
Lasciatemi lo zoom dentro
>> A destra, in modo da avere i file di intestazione e si dispone di file di implementazione.
In realtà -
OK.
Questo è un po 'strano, ma abbiate pazienza con me.
Poi, perché abbiamo scelto una singola vista applicazione, stiamo per essere
lavoro con storyboard.
>> Quindi, storyboard è qualcosa che Apple ha messo a punto per aiutare veramente
Gli sviluppatori in rapida prototipazione loro applicazioni.
Quindi, questo è dove è possibile creare un app senza scrivere una
singola riga di codice.
Tuttavia, nella nostra applicazione vista singola, noi, naturalmente, abbiamo una
file per la nostra vista, che è un controller della vista.
Quindi, abbiamo l'intestazione e il file di implementazione, qui.
>> E, ho intenzione di diminuire ora perché abbiamo bisogno di lavorare nello storyboard.
Quindi, ecco la nostra vista.
Se noi, semplicemente, eseguire l'applicazione in questo momento, non c'è molto eccitante in corso.
Quindi, vedrete questa schermata bianca.
OK?
>> E, nella nostra zona utilities, possiamo aggiungere un mucchio di cose diverse ad esso.
Così, quando hai a che fare con schermi in iOS, vista controllori sono il
oggetti che incapsulano, sorta di, le vostre opinioni.
Quindi, un controller della vista sempre ha una proprietà chiamata vista.
E questo punto di vista, in genere, contiene, si sa, quello che si
voglio vedere su uno schermo.
>> Quindi, bene, facciamo solo cominciamo mettendo, forse, forse un etichetta.
Quindi, cerchiamo di mettere un'etichetta in là -
bastone nel mezzo.
Così, ora che ho cliccato su etichetta, I può andare nella finestra di ispezione Proprietà
e cominciare a cambiare il suo valore.
Chiamiamolo CS50 Colours.
>> E, posso anche cambiare il tipo di carattere.
Così, invece di fare sistema, che è il default, si può fare uno personalizzato.
Possiamo cambiare -
si sa, UltraLight, rendono 32.
E poi, possiamo fare il nostro box più grande.
>> AUDIENCE: Pensi che puoi ingrandire in appena un po 'di più, forse?
>> RHED SHI: Sì?
OK.
>> AUDIENCE: Basta toccarlo?
>> RHED SHI: Vediamo.
Fa questo lavoro?
>> AUDIENCE: Basta passare la Xcode?
>> RHED SHI: Certo.
OK.
Impressionante.
>> PUBBLICO: L'etichetta sotto?
L'etichetta?
>> RHED SHI: Che cos'è?
>> AUDIENCE: Cosa discesa era l'etichetta sotto?
>> RHED SHI: Allora, la domanda era, che cosa discesa era l'etichetta sotto?
Si deve, semplicemente, essere sotto qui.
Credo che sia una cosa cubo.
Ma di solito, questo è il default -
Sto solo andando qui finché non trovo una etichetta.
Già.
>> Così ora, abbiamo la nostra etichetta.
Diciamo centrarlo.
E Xcode ci dà le linee guida per il centraggio oggetti.
Così, ora corriamo di nuovo il nostro codice.
>> Ci andiamo.
Quindi, abbiamo CS50 Colours.
E ora, mettiamo un pulsante in là, giusto?
Perché vogliamo fare questo interattivo.
Quindi, cerchiamo di mettere un pulsante qui.
E chiameremo questo pulsante "tap qui per continuare. "Ci centrare, anche
In realtà, è già centrato.
Già.
>> Così, ora abbiamo un pulsante.
E se corriamo di nuovo, stiamo andando di avere qui un bottone bel po '.
E posso clic su di esso, ma non fa niente, perché non abbiamo fatto
nulla con il tasto ancora.
>> Quindi, creiamo un altro punto di vista, giusto?
Quindi, diciamo che voglio toccare quel pulsante e voglio
passare a un'altra pagina -
un'altra vista.
Quello che ho intenzione di fare è, posso creare un controller di vista, giusto?
Ora io clicco sul mio pulsante, quindi, la cosa importante è che ho intenzione di
fare clic su - o -
sì, regolazione premere sulla mia tastiera.
Controllo.
Fare clic sul pulsante, quindi trascinare.
>> Quindi, ricordatevi di tenere premuto il tasto di controllo.
Facciamo di nuovo.
Quindi, tenere il controllo, fare clic e trascinare a ciò che si vuole fare.
OK.
>> E ora, ho diverse opzioni qui.
Mi può spingere, o posso fare un modale, o posso fare una consuetudine.
Spingere è solo se si dispone di un controller di navigazione.
In questo momento, la nostra prima visione controllore non è all'interno di qualsiasi
controller di navigazione.
Quindi, il controller di navigazione è quello che ti dà il pulsante indietro
l'app iOS in cui si dispone, si sa, che la parte superiore, una sorta di, bar spessore -
dove si può tornare indietro, o avanti, et cetera.
Al momento, non ho questo.
E così, ecco perché non posso fare una spinta.
>> Così, ho cliccato sul pulsante accidentalmente, qui.
E in realtà, corriamo il codice, e dovrebbe bloccarsi su di me.
Solo se premo il tasto però, quindi -
destra.
Quindi, questo è male.
>> E, come potete vedere, qui, abbiamo avere il messaggio di errore.
Quindi, "segues push possono essere utilizzati solo quando source controller è gestito da un
istanza di controller di navigazione dell'interfaccia utente. " Quindi, perché non era all'interno di un
controller di navigazione, Non ho potuto farlo.
>> Così, adesso, sto tornando al cartella, risalente al storyboard.
>> AUDIENCE: Qual è la navigazione controllore, di nuovo?
>> RHED SHI: Allora, adesso ti faccio vedere.
Vediamo.
Così, vado a cliccare su questo punto di vista controller, quindi ho intenzione di andare
fino al prodotto -
in realtà, no, mi dispiace - redattore.
E ho intenzione di andare in -
in realtà, ho fatto clic su di esso?
No.
Ci andiamo.
Ho intenzione di andare fino in montaggio, scendo per incorporare, e poi la navigazione
controllore.
>> OK.
E, il mio lavoro sembra davvero disordinato, quindi cerchiamo di Ripuliamolo.
Quindi, tutto questo è storyboard.
E in questo modo -
OK, stop -
Posso costruire rapidamente qualcosa come questo.
E poi, ora posso tornare indietro, sai?
>> Ma questo è un po 'noioso, giusto?
Quindi, quello che voglio fare è, non voglio fare, semplicemente, una vista
controllore.
Diciamo che volevo realmente fare un controller della vista tabella, così posso mettere in
alcuni colori piacevoli, nella tabella.
>> Così, ora che ho messo nel mio vista tabella controllore, ho bisogno di collegarlo indietro
da questo pulsante per la View Controller.
Quindi ho bisogno di fare il mio controllo, click, drag cosa di nuovo.
E ora posso fare spinta, perché io incorporare all'interno di un controller di navigazione.
>> AUDIENCE: controller di navigazione solo permette di andare da un posto all'altro?
>> RHED SHI: sì.
Quindi, più tecnicamente, è un oggetto in cui -
così, all'interno della navigazione oggetto controller,
tiene traccia di una matrice.
E tale matrice contiene tutte le successive visualizzare controllori.
Ecco perché quando si preme indietro, torna alla pagina precedente.
Poiché il controller di navigazione oggetto, o il codice che si prende cura di
questo oggetto, ha una matrice che mantiene tenere traccia di questi controller di vista, e
possono poi, si sa, dq la vista controller e vi darà indietro il
precedente.
>> Quindi, questa è roba tecnica, ma -
e io vi mostrerò più avanti in codice, se abbiamo tempo.
Sto tipo di esecuzione fuori in tempo, ma -
>> Così, con la visualizzazione della tabella, quello che possiamo fare è -
Di solito è impostato automaticamente Dynamic Prototype -
stiamo andando a renderlo celle statiche, altrimenti andremo a
incorrere in alcuni problemi.
>> E poi, diciamo che sto avere una sezione.
Così, le sezioni è come -
se hai mai visto l'app musica, quando avete artisti, sezioni sarebbe
essere l'una del tramite Z's -
le lettere -
e poi, si sa, l'individuo righe sarebbero i nomi degli artisti.
E così, ciò che è freddo qui, è che posso accedere a tutti gli oggetti all'interno
del mio storyboard attraverso questo menu a discesa, troppo.
>> Così, vado a cliccare su mia sezione, e voglio, sai, forse cinque righe.
E poi, all'interno di ogni riga, Voglio mettere una etichetta.
E ho intenzione di chiamare questo blu.
E poi, voglio mettere una vista dell'interfaccia utente, è so, forse perché, come, una piccola scatola.
>> In modo che posso mostrare alla gente un'anteprima del colore.
E io tornerò alla proprietà e cambiare quel colore, oh, io non lo faccio
sapere, questo.
>> E poi, notare anche, qui, quando ho gli accessori, che possono avere un sacco
dei vari accessori che in genere si vede.
L'indicatore di divulgazione, al dettaglio, o segno di spunta, o semplicemente dettagli.
Così, forse possiamo fare, come, una rivelazione indicatore, per esempio.
>> E allora, perché non prendiamo questi, copia incollarli, e metterli in
successiva riga della tabella.
Quindi, possiamo chiamare questo giallo.
E avrei potuto estendere questo.
Facciamo giallo.
E in questo modo, possiamo copiare incolla nostro modo in giù.
Che cosa è stato?
Viola.
>> Quindi, questi sono tutti i CS50 tipico colori che avete visto in classe -
in realtà, mi dispiace -
o sul sito web.
Speriamo che voi potete vedere quello che sto facendo qui.
OK.
Ultimo.
>> AUDIENCE: Come hai aggiunto la riga inizialmente?
>> RHED SHI: Allora, la domanda era, come ho aggiungo la riga inizialmente?
Sono entrato in questa sezione tabella - o comunque posso
selezionare la sezione della tabella -
e poi, qui, ho aggiornato il numero di righe.
>> E, lasciatemi sperare che questo funziona.
OK.
Vediamo se funziona.
Oh, perfetto, fantastico.
OK.
Mentre stavo costruendo il mio demo, alcuni le cose non erano allineati, così, grazie per
l'applauso.
>> Già.
Allora, vediamo.
Faremo questo nove solo per fare tutto - o addirittura, facciamo solo
trasformare tutti questi in comunicazione indicatori.
E poi, quello che voglio mostrarvi, troppo, ero come posso prendere ciascuno di questi
righe e farli interagire -
oh.
No.
>> Oh.
Inoltre, voglio mostrarvi -
qui, posso mettere il titolo del mio controller di navigazione, giusto?
Quindi, in realtà, si noterà, non appena ho integrato il controller di vista all'interno
del controller di navigazione, vediamo questa barra di navigazione nella parte superiore della nostra
Rappresentazione storyboard di un controller della vista.
E così, questo ci dà, come, un visual, sorta di, guida al nostro schermo visibile.
Questo è, ovviamente, sta per la barra di navigazione.
>> E quello che voglio fare in fretta, ora, viene messo in un altro -
quindi questo controller della vista tabella che ho fatto da prendere uno di questi e trascinandolo
qui, e questo è ciò che mi ha permesso di rapidamente, in realtà, creare una vista tabella
controllore.
Se abbiamo il tempo, però, ti vedo che, a livello di programmazione, è una
po 'più difficile da creare una tabella View Controller, perché ci
sono un paio di metodi che sono necessaria affinchè, una sorta di, scrive
in ordine per la vista tabella controller per essere visualizzato correttamente.
>> Tuttavia, voglio solo mostrarvi, ora, un esempio di dove, se prendo questo,
per esempio -
Ho messo in un altro controller della vista.
E ora, diciamo che voglio controllare alt mio primo blu
riga della tabella a qui.
E voglio chiamare questo blu.
E poi -
vediamo.
Sono al punto di vista ora, e posso cambiare lo sfondo blu.
>> E così, avviso, qui, questa discesa menu fornisce anche una gerarchia di tutti
di questi oggetti.
Quindi, una cosa importante da notare, qui, è che tutte queste cose, qui -
questo controller vista tabella, la tabella Vista, sezione vista tabella, vista tabella
cell - tutte queste sono oggetti, nel codice.
Quindi, si sa, una etichetta in questo momento è in fase di la visualizzazione del contenuto, et cetera.
Così via e così via.
>> Quindi, se corriamo questo codice, si dovrebbe vedere qualcosa -
vediamo se questo - sì.
Quindi, ci andiamo.
Ma, se noi non lo facciamo, nessuno di queste altre cose.
Giusto?
Quindi solo questo funziona.
E, per motivi di tempo, non lo farò andare in, si sa, mettendo
le altre.
E questa è la fine, una sorta di, storyboard -
quello che volevo mostrare voi per storyboard.
>> E, ho un esempio elaborato, in realtà, proprio qui.
Quindi, questo è lo storyboard che ho fatto in precedenza.
Quindi, come potete vedere, questo è stato il mio controller di navigazione.
Poi ho avuto il mio primo controller della vista, poi ho avuto il mio controller della vista tabella,
e poi ho avuto tutti questi -
così in precedenza, stavo facendo qualcosa di molto diverso.
Quindi, scusate queste cose.
Probabilmente io pulisco più tardi prima Mando via alla produzione.
>> Ma, se corriamo questo, vedremo che tutte le opzioni sono
a nostra disposizione.
Tranne che non ho fatto gli sfondi quei colori.
Così, bella semplice applicazione.
>> Ora, proviamo ad affrontare questo livello di programmazione.
OK.
Così, per fare questo, stiamo solo andando ad avviare un nuovo progetto Xcode.
Noi faremo un'applicazione vuota ora, perché non vogliamo avere la
storyboard.
Quindi, sto semplicemente me stesso limitando a non utilizzare uno storyboard e un
un'applicazione vuota non sarà dammi uno storyboard.
Questo è solo per prevenire me stesso da barare.
Vediamo.
Aspetta.
Did I -
Sì.
OK.
>> Giusto.
Così, qui, ci ritroviamo con altro che codice.
Quindi, mi permetta di spostare questa finestra poco più.
Giusto.
Come potete vedere qui, gli unici file stiamo dato sono AppDelegate.h e dot
m, e non abbiamo storyboard più.
>> Quindi, se corriamo questo, stiamo ancora andando a arrivare alla schermata bianca, grazie a Dio.
OK - schermo bianco, ma nient'altro.
Ed ecco la parte importante.
Questo è dove avviene l'azione.
Nelle versioni precedenti, non c'è solito nessun codice qui, ma la
storyboard prevede essenzialmente il codice per questa parte.
Non voglio entrare nei dettagli su come.
>> E quello che vogliamo fare ora è, vogliamo per andare in qui, e questo piccolo spazio
inizia a creare nuovamente la nostra applicazione.
So -
yes?
>> AUDIENCE: Zoom?
>> RHED SHI: Zoom.
Si ', certo.
OK.
Sarò scrivendo, quindi questo non dovrebbe importa troppo.
OK.
>> Quindi, in primo luogo, ricordiamo abbiamo voluto creare un controller di navigazione, giusto?
E anche, come potete vedere qui, Xcode fa davvero un grande lavoro di
auto-riempimento.
Quindi, come si noterà, i nomi dei tutto sono molto più a lungo
al solito, ma Xcode lo riempie in per voi.
Quindi posso solo premere Invio.
>> Quindi, voglio creare una navigazione dell'interfaccia utente puntatore del controller, e posso chiamare
navigationController.
Ora, cosa faccio adesso?
Dopo questo segno uguale, ho bisogno, in primo luogo, creare all'interno della memoria.
Così, ho intenzione di fare navigationController alloc -
così, questo è simile a malloc, che voi ragazzi utilizzate in C -
e poi, ho intenzione di init esso.
>> Quindi, è molto importante che ogni oggetto che si crea, si vuole
alloc e init esso.
Che sta andando a creare e instantialize all'interno della memoria, e
ora è possibile utilizzarlo.
Va bene?
Se non lo fai, l'oggetto non non esisti, e si incorrerà in un mucchio
di problemi.
>> E poi, voglio creare un controller di vista, giusto?
Quindi, voglio creare un UIViewController stella -
così, tutto è un puntatore Objective-C, e ho intenzione di fare
qualcosa di simile, qui -
alloc, init.
OK.
>> E allora che cosa ho intenzione di fare è, io sono andare - così, ricordate quando abbiamo fatto
l'embed in controller di navigazione?
Questo è come si fa nel codice.
Stai andando a fare navigationController
pushViewController -
>> AUDIENCE: [incomprensibile].
Sarà questo accadere per noi, o -?
>> RHED SHI: Oh, sì.
No.
Mi piace meglio.
No, funzionerà anche per te.
Quindi, questi sono tutti i metodi.
Quindi pushViewController è un metodo, e inoltre, più specificamente, è un
metodo della UI istanza controller di navigazione.
Perché ho dovuto creare la mia navigazione dell'interfaccia utente regolatore stella, e poi ho
può chiamare questo pushViewController sul mio specifica istanza di una navigazione dell'interfaccia utente
controllore.
>> AUDIENCE: Dobbiamo fare l'esatto parola, o ha già esiste per esso?
>> RHED SHI: Sì, perché è un metodo.
E 'come una funzione.
E 'come printf.
E 'come scanf.
E 'come strcompare.
Tranne che sa quello che si potrebbe desiderare di tipo, e notare che essa sarà sempre
venire con le cose che sono legalmente consentito per voi.
Quindi, se non si presenta qui, allora qualcosa non va.
>> Quindi, pushViewController.
Così, ora, voglio spingere la mia nuova creazione
UIViewController, e poi, animato -
forse no.
Perché questo sta per essere il primo controller della vista.
Voglio dire, anche se ho fatto animazione, probabilmente non apparirà, perché
è la prima schermata.
>> E ricordate le staffe.
Quindi, ricordiamo quanto abbiamo usato le staffe?
E all'interno delle parentesi, il oggetto invita un metodo -
così il nostro oggetto è la navigazione controllore, e il metodo è una spinta
View Controller animato.
E vedere come ci vogliono in due argomenti, e sono separati dal, una sorta di,
parole e due punti.
Così, Objective-C cerca di farlo bello e facile per voi a leggere ad alta voce -
il codice - e lo hanno semi, sorta di, un senso.
>> Tuttavia, facendo proprio questo non è sufficiente.
Lasciatemi Zoom Out momento.
Facendo solo questo non basta otteniamo quello che abbiamo ottenuto in precedenza.
Così qui, noterete che non c'è in realtà non sta per essere qualsiasi tipo di
bar, qui, giusto?
Non c'è nessuna barra di navigazione, il che significa che non abbiamo ancora ottenuto esso.
>> E possiamo provare che fuori, anche, da, forse, cambiando lo sfondo
ViewController, giusto?
ViewController.background--
ah.
Così, vedere come ViewController non ha avuto un colore di sfondo, anche se
voluto accedervi?
E questo perché ViewController è un contenitore per la vista.
Quindi, ha una proprietà della vista, che poi ha un colore di sfondo.
>> E, posso impostare, una sorta di noiosamente, chiamando il colore
sull'oggetto UIColor.
Quindi, avviso qui, redcolor è un metodo.
E 'un metodo della classe di UIColor.
Perché io non ho dovuto creare un istanza effettiva di un UIColor in ordine
per chiamare il metodo su di esso.
Ho solo, semplicemente, chiamai il nome del tipo simile.
Io, come, chiamato a int, int se aveva, come, un metodo ad esso, per esempio.
>> E così, se corriamo questo codice, faremo si noti che lo sfondo è
in realtà non rosso.
E 'ancora bianco.
E come possiamo aggirare cioè, notare come c'è il self.window.
Cioè, come, il contenitore finale per l'applicazione.
È l'ultima cosa che contiene tutto sullo schermo, per un
iPhone o iPad applicazione.
>> E, convenientemente, self.window ha questa proprietà chiamata
RootViewController.
E che sta per essere il puntatore il primo controller della vista all'interno
della vostra applicazione.
Allora, che cosa vogliamo fare qui, ora, è per impostare la parità alla nostra navigazione
controllore.
Giusto?
Perché, tecnicamente, la navigazione controller è la nostra prima visione
controllore.
Tiene traccia di una serie di altri vista regolatori, e abbiamo spinto questa
View Controller in quella matrice nel controller di navigazione.
>> Quindi, non si vuole fare questo.
Non sarebbe davvero aiutare.
Si vuole fare questo, se si voleva fare un controller di navigazione, che più
di voi probabilmente si, perché si vorrà a, sorta di, avere una sorta di,
come, menu per tornare o qualche homepage per tornare, piuttosto che un
schermo vuoto.
Sì?
>> PUBBLICO: E 'scomodo per di zoomare sul -
>> RHED SHI: Già.
Quindi, sì.
Questo è il codice, e ora cerchiamo di provarlo.
>> Quindi, ci andiamo.
Magia.
Quindi, OK.
Grazie.
OK.
Così ora, quello che vogliamo fare è - così, stiamo genere di limitati, qui, giusto?
Potenzialmente Potremmo scrivere tutto all'interno di questa funzione.
Ma, non è così che lo sviluppo iOS di solito funziona.
>> Quindi, quello che andremo a fare è che siamo andando a creare dei nuovi file.
Ma, più in particolare, stiamo andando a creare un'altra classe Objective-C, o
un altro oggetto -
classe e gli oggetti sono intercambiabili qui.
Ed ecco come ho potuto, potenzialmente, creare un'altra classe di controllori U.
>> Quindi, si tratta di una sotto-classe, come si noterà, qui, è una sotto-classe del
Controller di vista dell'interfaccia utente, ma non posso chiamare qualsiasi altro nome qui.
Potrei chiamare questo CS50, potrei chiamare questo controller della vista, potrei chiamare
questo punto di vista regolatore blah -
tutto quello che voglio.
Questo è solo il nome della classe.
Tuttavia, sarà importante perché, in sostanza, quello che sto facendo
è qui, sto creando un altro nome della classe.
Quindi, sarà, come alcuni specie di tipo o di un oggetto.
Quindi, dovrebbe essere un po 'generico.
Non sta andando essere molto specifico.
>> E poi, voglio sottolineare queste due opzioni.
Perché stiamo facendo tutto dentro di codice, a volte è molto più facile
di portare in un file di interfaccia, tale che Posso letteralmente trascinare e rilasciare, come
abbiamo fatto in precedenza con storyboard -
si sa, un'etichetta o un pulsante, o qualsiasi altra cosa.
E così, xibs sono file che consentono di fai quello, e dovete collegarlo
a questo file controller della vista.
>> Così, ho intenzione di deliberatamente Non controllare questo.
Di solito Vorrei verificare questo, e se io solo fatto questo per iPhone o iPad, I
sarebbe controllare questo e semplicemente avere uno per, si sa, l'iPhone o l'iPad.
Ma dal momento che sto facendo universale, vado per creare due di quelli più tardi.
Così, ho intenzione di deliberatamente deselezionare questa.
>> Anche questo è molto importante.
Un sacco di volte, ho avuto i bug dove questo non è stato verificato.
E così, ovviamente, questo file non è, specie di, come, inclusi o importati
all'interno di questa cartella test.
E così, il mio codice ha assolutamente idea l'esistenza di questo file, e
che provoca un sacco di dolore e ore di debugging.
Ma, basta assicurarsi che questo sia selezionata in modo che, si sa, l'obiettivo di questa
file è per questa applicazione.
>> OK.
Così, ora abbiamo creato due nuovi file.
E questi file sembrano quasi vuoto.
E, in realtà, diamo anche continuare sulle creando dei file XI ter.
Così, in precedenza, ero in Cocoa Touch discesa.
Ora, ho intenzione di andare in User Interfaccia touch, e come potete vedere, ho
può creare uno storyboard.
>> Quindi, anche ho iniziato con un vuoto applicazione, posso ancora usare un
storyboard.
Anche se, diventa difficile in termini di come si desidera collegare
che, per il codice.
Quindi, io non ci andrò.
>> Ma, che cosa vogliamo fare ora è creare una vista.
E si può scegliere per un iPhone o un iPad.
E in genere, per indicare la differenza - se stai facendo un
applicazione universale -
hai messo un iPhone sottolineatura, o si può fare un Twiddly.
Non ha molta importanza.
E 'semplicemente di differenziare che vista è per quale dispositivo.
>> E così, ora guarda.
Ho una schermata che posso lavorare.
E così, per esempio, posso mettere una etichetta qui, lo sai, e posso anche mettere
un altro pulsante qui.
Non mi dilungherò cambiare i valori qui.
>> Ma, ciò che è importante qui è che il proprietario del file -
così, io sono dentro di iPhone vista, file di iPhone XI ter.
E in questa zona di navigazione o menu a discesa, voglio andare al
proprietario del file.
E questa è la realtà importante passo qui.
Voglio fare la vista di classe controllore, in modo che questo file XI ter è
andando da associare il mio controller della vista.
E tutto ciò che faccio dentro la mia vista regolatore di programmazione è
andando a riflettersi qui.
>> Così, però, notare che -
in realtà, facciamo questo punto di vista sfondo blu, per esempio.
O verde.
E poi, quindi se noterete, nel questo codice, questo è dove siamo arrivati ​​alla nostra
controller di navigazione.
>> Anche se abbiamo fatto questo passo, è ancora in corso di essere rosso, non verde.
E c'è un motivo.
E 'perché, quando abbiamo inited il nostro controller della vista, qui -
scusate, è un po 'pazzo -
quando abbiamo inited nostro controller della vista qui, abbiamo inited esso del tipo generale
UIViewController.
OK?
Quindi non abbiamo neanche fare con questa classe.
>> Quindi ricordate, questo è come una classe ora.
Può essere pensato come un tipo, basta come UIViewController è un tipo.
E per utilizzare tale, ciò che dobbiamo fare è importarlo -
import ViewController -
e, come potete vedere, AutoFills per me.
Quindi, ViewController -
e ora, qui, posso cambiare questo UIViewController a ViewController.
Ed ora, qui, posso cambiare questo ViewController.
>> Corriamo di nuovo.
E 'ancora rosso.
E il motivo per cui è ancora rosso è perché -
woah, che cosa è successo lì?
Abbiamo voluto associare questa XI ter file con il controller della vista.
Tuttavia, al fine di fare effettivamente che, abbiamo bisogno di andare in questo.
E quando facciamo la init, che vogliamo fare initWithnibName, e poi vogliamo
fare la stringa a View_iPhone, per esempio.
È possibile ignorare il pacchetto qui.
>> E questo sta andando per consentire noi, in realtà -
uh oh, c'è un problema.
Giusto.
>> E così, c'è un problema perché, in il nostro file vista XI ter, abbiamo un'etichetta e
abbiamo un pulsante.
Tuttavia, anche se abbiamo collegato quei due, non c'è niente dentro di
ViewController.h o ViewController.m che riflettono quelle
bottoni o le etichette.
Quindi, abbiamo bisogno di scrivere quelle come proprietà del controller della vista.
>> Quindi, questo è come si dichiara una proprietà.
Prende in, di solito, queste due opzioni.
Ai fini di noi e questo seminario, Direi che, in generale,
la maggior parte delle proprietà sono nonatomic e conservare.
Si può leggere da Google la ricerca, si sa, la differenza tra
nonatomic e mantenere in poi, conoscere, Google o qualcosa del genere.
E io ti porto a, come, Catasta Overflow, dove le persone avranno
risposte per le differenze tra quelli.
Ma per ora, questo è quello che vogliono essere interessato.
>> E noi vogliamo fare una etichetta UI, stella, e si può chiamare quello che vogliamo.
Possiamo chiamare questa, si sa, etichetta.
E, creeremo un altro uno per il pulsante.
E ricordatevi di includere l'asterisco, perché abbiamo a che fare con i puntatori
praticamente ovunque all'interno di Objective-C.
>> Tuttavia, tale volontà non ancora risolvere il problema, come potete vedere qui.
E il motivo è perché, ogni volta che desidera collegare un'etichetta di file XI ter o un
pulsante per il programma, o l'intestazione e file di implementazione, vogliamo
aggiungere questo pezzo di codice -
presa.
Si noti che si tratta di una parola chiave.
>> E, appena finisco di battitura che fuori, dovrebbe avere queste
due cerchi, qui.
Di solito, non sono compilati dentro
Io non sono sicuro perché sono.
Ma di solito, dovrete manualmente collegarli andando a questa parte
l'area utilities.
>> E così, adesso, ho la mia etichetta selezionato, e voglio trascinare questo nuovo
riferimento sbocco per il proprietario del mio file, e quindi fare clic su Etichetta.
Così ora, finalmente, questa etichetta è collegato a questa etichetta.
E questa etichetta è quello che stiamo andando a utilizzare a livello di programmazione per cambiare la sua
testo, il suo carattere, il suo sfondo colore, et cetera.
>> Quindi, perché non facciamo l' stesso per il pulsante?
E come si noterà, per il pulsante, è un po 'più complicato.
Perché, voglio dire, si suppone di premere un pulsante, quindi ha un sacco
di opzioni per come gli utenti possibile premere su un pulsante.
E poi, vedremo in seguito che ci si può collegare questo alla nostra
codice per farlo funzionare.
>> Quindi, per ora, però, vogliamo collegare al pulsante effettiva
all'interno del nostro codice.
Così andiamo al nuovo outlet referenziamento, e poi fare il pulsante.
Ora, corriamo di nuovo.
Uh oh.
OK.
Non so cosa sta succedendo qui ora.
Whoa.
Solo un attimo, qui.
>> In realtà, perché non prendiamo un guardare un altro esempio in
l'interesse di tempo.
OK.
Quindi, ecco il più prontamente preparato esempio per ViewController.
Come potete vedere qui, ho incluso le proprietà per l'
etichetta e il pulsante.
E poi, questo pezzo di codice qui -
questo IBAction -
era un collegamento a questo pulsante qui.
Quindi, come potete vedere qui, Touch Up Dentro è collegato al selettore
chiamato pulsante premuto.
>> Quindi, possiamo effettivamente passare attraverso il movimento di nuovo, qui, prendendo Touch Up
Dentro e trascinandolo Proprietario del file, e quindi
Fare clic sul pulsante premuto.
Ora, corriamo il nostro codice.
Così ora, questo pulsante ora funziona e ci porterà alla pagina successiva.
>> E, in termini del nostro controller della vista, questo è il pezzo di codice che ha
cura del pulsante premuto.
Ed è importante notare qui, che Ho creato un altro tipo di vista
controllore chiamato un tavolo View Controller.
Quindi, questo era simile per eseguire in storyboard, quando ho trascinato una delle
questi controllori vista tabella nella storyboard.
Sto creando un altro
>> Puntatore al controller della vista tabella, alloc e init-dola, e poi fare
controller di navigazione auto dot, spingere ViewController, questo nuovo
viewController.
E ho impostato l'animazione di sì, perché ora all'interno della mia app, e ho
vogliono vedere effettivamente l'animazione in corso dalla home page alla tavola
View Controller.
>> AUDIENCE: Ti preoccupi ancora in merito a garbage collection?
>> RHED SHI: Che cos'è?
No.
Quindi, la domanda era, avete lavorare con garbage collection?
Quindi, Xcode 4 aveva come ARC, che è conteggio dei riferimenti automatico.
E così, di solito quando si inizia un nuovo progetto, si potrebbe verificare che, in quanto
nessuno vuole davvero affrontare liberando memoria e roba.
Ma credo che in Xcode 5, non c'è nemmeno tale opzione sul nuovo progetto.
Quindi, automaticamente che fa per voi.
Sì?
>> PUBBLICO: Si può esportare un PDF nel vostro storyboard?
>> RHED SHI: Sì, assolutamente.
Quindi, tutti questi saranno inclusi nella il codice sorgente, in modo che voi ragazzi può controllare
progetto Xcode effettivo per esso.
Sì?
>> Pubblico: Ma, voglio dire, come posso stampare un PDF con il mio storyboard?
Se voglio solo esportare l' le immagini per mostrare a qualcuno.
>> RHED SHI: Oh yeah.
Penso che, forse, si può solo catturare una schermata.
Gia ', e inviare loro una schermata colpo o qualcosa del genere.
Già.
>> Allora, vediamo.
Nell'interesse del tempo, credo questo è tutto l in grado di coprire oggi.
Ma, io so che è, in realtà, basta appena tocca la superficie di iOS
sviluppo.
Quindi, non esitate a contattarmi se avete domande su iOS
sviluppo.
E, si spera, sarò in grado di pulire up parte del codice per l'origine
file di codice, in modo che avrete un po ' veramente bello esempi per lavorare.
>> Oltre a questo, se voi ragazzi stanno andando al CS50 Hackathon, mi può o
non essere lì, e posso dare una mano con qualche sviluppo iOS, troppo.
Così, grazie mille, ragazzi.