RHED SHI: Bienvenue à voir séminaire CS50 - Introduction à iOS. Merci à vous tous d'être venus. J'espère que vous êtes aussi excités que je suis sur iOS. L'année dernière, j'ai pris CS50 comme un étudiant en deuxième année, et j'ai pratiquement appris iOS pour mon projet final. Et c'était assez - bien, ce n'était pas facile, mais il ya beaucoup de tutoriels de soutien en ligne. Et j'espère vraiment que cette séminaire, je vais vous donner les gars une tête commencer sur le développement iOS Donc, en termes de développement iOS, il ya deux choses principales que nous vouloir couvrir aujourd'hui. Tout d'abord, la langue - la langue va être en Objective-C. Nous entendons réellement quelque chose de vraiment passionnant. Ainsi, vous pouvez rejoindre l'ensemble d'Apple communauté de développeurs et construire une applications vraiment génial. Aussi, iOS 7 est belle, je l'espère, pour certains d'entre vous. Mais c'est controversé, je le sais. Et surtout, ce que je veux faire est le guide vous par Objective-C, et également Xcode, qui est intégré au environnement de développement que vous serez travaillant dans iOS. Et donc, juste un mot sur Objective-C. Fondamentalement, c'est exactement la même chose que C, mais avec beaucoup d'autres choses. Et donc, plus strictement, c'est en fait un super-ensemble de C. Donc, tout ce que vous peut faire en C en ce moment, ce qui est aimez essentiellement pset 0 à 6, vous peut faire en Objective-C. Donc, ne vous sentez pas peur de cette nouvelle langue que vous allez apprendre. Vous avez déjà couvert beaucoup de lui, parce que vous avez tous fait C ce passé semestre, sauf que maintenant vous allez d'avoir beaucoup plus de travailler avec. Et je vais vous conduire à travers un quelques exemples pour mettre en évidence certains des principales différences que j'ai trouvé étaient vraiment important quand j'ai appris Objective-C l'année dernière. Eh bien en fait, oui, l'autre point est, Objective-C est, de toute évidence, orientée objet. Et nous allons discuter un peu ce que cela signifie plus tard. Fondamentalement, c'est comme la façon dont vous avez travaillé avec struct dans ce jeu de processeurs passé, avec nœuds et même d'autres des choses comme ça. Sauf, en Objective-C, tout est un objet, et vous allez être passant autour des pointeurs vers des objets plutôt que les valeurs elles-mêmes. Donc, c'est juste quelque chose d'important garder à l'esprit. Alors, pourquoi ne pas commencer avec un peu différences de syntaxe entre C et Objective-C? Je tiens à souligner le # include, vous savoir, io.h norme en C et C + +, avec la version Objective-C de ce qui est # import, puis une sorte de fichier d'en-tête. Dans ce cas, il serait UIKit, vous le savez, réduire UIKit.h. Il pourrait également être, vous le savez, MKMapview vous slash MKMapview.h si vous voulez à faire, comme, une carte à l'intérieur de votre application. Des choses semblables comme ça. Donc, la chose importante est notamment a maintenant changé d'importer. Mais l'idée demeure. Vous allez être importer une sorte de fichier d'en-tête dans votre programme. Je tiens également à souligner la différence entre printf et NSLog. Cependant, comme nous le disions plus tôt, Objective-C est un super-ensemble strict de C, ce qui signifie qu'il existe printf en Objective-C, aussi. Mais, la plupart des gens n'utilisent pas que. La plupart des gens utilisent ce NSLog parce qu'il vous donne un timbre de temps, et nous verrons en action plus tard. Mais, c'est généralement une plus utiles manière à imprimer des variables. Et je tiens également à souligner que NSLog prend exactement de la même valeurs d'espace réservé comme printf fait - si% d est un int, % F est un flotteur. Cependant, je ne veux mettre en évidence ce tout dernier - NSLog% au signe - c'est un espace réservé pour un objet. Et comme je le disais plus tôt, Objective-C traite assez bien la plupart du temps dans les objets, et si cela se fera dans l'utilisation lorsque vous vouloir imprimer, peut-être, peut-être un NSArray, ou NSDictionary, ou un NSString. Ainsi, également, remarquer que, dans notre NSLog déclaration, nous avons un signe au devant de la citation - c'est pour signifier que les chaînes, maintenant, en Objective-C sont des objets. Ils ne sont plus simplement carac étoiles. Ils sont des objets et sont traitée comme telle. Donc, il est vraiment important que lorsque vous utilisez NSLog il faut dans un NS chaîne, ce qui signifie que vous aurez d'inclure un au devant de votre guillemets. Et c'est pourquoi vous voyez, ici, dans l'ensemble de ma fonction appelle à ce NSLog, je avoir un au devant des citations, même si le% d et f de l'% sont tout de même à partir de C. Vous avez des questions à ce jour? Je vais essayer de passer par ce rapidement afin que nous pouvons avoir plus de temps pour travailler avec Xcode et Objective-C, de sorte que vous les gars peuvent obtenir de plus familier avec elle. Ensuite, je tiens à souligner quelque chose conceptuellement importante. Donc, en C, la plupart des choses sont des fonctions. Nous faisons un appel de fonction. Nous déclarons les fonctions de cette façon, avec tapez d'abord le retour, puis le nom de la fonction, entre parenthèses, puis quelles que soient les arguments et le type de ces arguments que nous voulons passer po Et Objective-C, parce que tout est un objet ou une classe - si la classe et l'objet sont deux termes qui sont pour la plupart synonyme de l'autre, afin que je puisse les utiliser de façon interchangeable tout au long du séminaire. Mais, vous verrez que nous avons des méthodes de Objective-C plutôt que de fonctions. Et méthodes appartiennent à des objets. Ainsi, tout comme, peut-être prendre par exemple, noeud - notre type [inaudible] noeud de pset 6 ou 5 - nous avons le mot, la propriété, ou la prochaine pointeur de nœud. Les méthodes sont tout simplement des fonctions à l'intérieur d'une sorte de structure. Donc, dans ce cas, la structure serait l'objet, et la méthode est quelque chose qui appartient à un objet. Et voilà comment vous déclarer, en quelque sorte, une méthode. Vous souhaitez commencer avec, encore une fois, le retour Type - oui, j'ai essayé de couleur coder les mots clés ici afin que vous les gars peut voir l', au moins, la mise en forme similitudes entre la fonction déclarations et déclarations de méthode. Donc, vous commencez, vous le savez, un retour Type - dans ce cas, c'est un tableau, ou un pointeur NSArray - et puis vous avez cette méthode. Et puis, ce qui est intéressant ici est qu'au lieu d'avoir parenthèses, nous avoir ces deux points. Et puis, en face de nos arguments, nous mettre, encore une fois, entre parenthèses le type de notre argumentation. Donc, en ce moment je suis en train de faire la comparaison entre, vous le savez, et n nombre, parce qu'ils sont deux entiers tels que. Et ensuite, l'autre est un type NSUInteger. Et puis, en Objective-C, lorsque vous vouloir avoir plusieurs arguments dans votre clause de méthode, vous, en quelque sorte, séparer les sortir un peu comme ce - Je ne suis pas sûr de savoir comment le décrire, mais c'est un bon exemple de la façon dont vous peut avoir plusieurs arguments là. Vous pouvez, bien sûr, juste totalement ignorer le côlon andArray NSArray tableau si vous voulez juste une méthode qui prend en un argument. Oui, question. PUBLIC: Les deux NSUInteger et Arguments NSArray qui peuvent être prises en à l'intérieur de la NSArray? RHED SHI: Oui. Alors, laissez-moi vous expliquer. Donc, oui. Donc, la question était sont NSUInteger et NSArray * types des arguments, et c'est exact. Donc, vous voulez toujours de préciser ce le type de votre argument est. Et ici, je vais essayer de vous présenter à une partie de la syntaxe et de vocabulaire Objective-C, ce sont donc les types réels que vous serez confrontés. Et comme vous le verrez, les tableaux ne sont plus, en quelque sorte, choses simples de support. Ils sont des objets. Bien que, si nous allons à la prochaine diapositive, nous pouvons voir que nous pouvons coder en dur un NSArray en Objective-C avec simplement un symbole au devant les supports. Je ne suis pas, en fait, tout à fait sûr que Je syntaxiquement codé en dur un tableau correctement pour la version C, mais c'est censé être dans un tableau C. Donc, c'est la façon dont vous le voulez bien, vous savez, peut-être utiliser les fonctions ou la méthodes que nous avons créé plus tôt. Droite? Donc, c'est là que nous déclarons notre fonction et notre méthode. Et maintenant, nous voulons les utiliser dans notre programme, et c'est comment nous pourrions le faire. Donc, en C, vous auriez, vous le savez, peut-être, un bool b, et vous le réglez à égale à la fonction, puis vous passez dans les arguments. En Objective-C, il est assez près la même chose. Vous avez NSArray * my_array, et c'est aller à égal - maintenant, la seule différence ici est cet objet chose, qui j'ai surligné en jaune, et comme vous pouvez le voir, en C, il ya pas d'autre mot jaune. Et c'est parce que les méthodes appartiennent avec un certain objet. C'est pour cela que j'ai besoin d'avoir un objet que, en quelque sorte, appelle cette méthode sur le nombre zéro, puis le NSArray a, b, c, d. Vous avez des questions à ce sujet? Nous verrons ces concepts en action bientôt quand nous entrons dans une démo. OK. Maintenant, je veux parler un peu brièvement Xcode environ 5, qui est le environnement de développement intégré que vous allez travailler avec. Je sais que beaucoup d'entre vous, ou certains d'entre vous, Mac n'ont pas, ce qui est un problème parce Xcode n'est pas disponible pour Windows et PC. Ne me demandez pas pourquoi, mais probablement - ouais, entreprise. Peu importe. Mais de toute façon, oui, je m'excuse si certains vous ne devez télécharger une sorte de machine virtuelle pour Mac dans afin de lancer Xcode 5. Mais c'est un très chouette logiciel à utiliser. Et donc, avant de nous plonger dans une sorte de démonstration, je veux juste vous montrer une image de ce que Xcode ressemble dans votre fenêtre, puis aussi parler ce tout cet espace est. Donc, c'est un peu comme apprendre à utiliser Microsoft Word, sauf que vous voulez se familiariser avec toutes les différentes choses qui sont en cours ici. Alors d'abord, je tiens à vous signaler à la barre d'outils en haut. Vous verrez que, au sommet, vous aurez le nom du fichier - ou, en fait, le nom de votre projet puis le nom de votre fichier. Prenez note de la pièce et les boutons d'arrêt. Ce sont ceux que vous serez aide pour exécuter votre application sur le simulateur - le simulateur iOS. Cela vient automatiquement avec Xcode 5, de sorte que vous n'avez pas à vous soucier de télécharger une sorte de simulateur. Vous appuyez simplement sur le jeu et il exécute votre application. Et vous pouvez jouer avec vous, et vous verrez comment cela fonctionne plus tard. Et puis, dans le centre, bien sûr, est où toute votre belle Code est va aller. Et puis, sur le côté gauche, vous aurez avoir cette, en quelque sorte, le dossier - navigation - et puis, vous verrez aussi que, le long de avec l'icône du dossier, il ya un tas d'autres icônes qui il sera utile plus tard. Et puis, sur le côté droit est un utilitaire zone où vous pouvez travailler avec certains des objets et spécifier, vous savoir, ce que la couleur devrait être, ce la police du texte devrait être, et cetera. Bien, tout ce que vous faites dans la zone d'utilité, vous pouvez faire dans le code ainsi. Et donc, je vais y aller par deux des exemples d'utilisation, il suffit, pas de code à tous - ou un code très minime - vers tout le code, juste pour que vous les gars savez ce que vous pouvez et ne pouvez pas faire dans Xcode et Objective-C. Et puis, enfin, au bas, vous avez la zone de mise au point. Ainsi, vous n'avez plus à courir GDB, et cetera, sur vos programmes. Il fait automatiquement pour vous. Et vous pouvez également imprimer choses à ce domaine. Donc en fait, plus tard, nous allons passer par mario.c, si vous les gars se souviennent encore que, dans Xcode. Ce qui devrait être amusant. Et puis, juste pour le ramener à Objective-C, je tiens à souligner que vous pouvez faire avec les instructions if. Donc, vous savez, parce que Objective-C est un ensemble du C, tout ce que vous faites est, littéralement, le même que C. Vous venez avoir de légères différences. Ainsi, vous remarquerez la forme d'un si déclaration est toujours le même - vous avez si, et puis vous avez des parenthèses un état intérieur de, et puis accolades pour tout ce que vous vouloir faire à l'intérieur de là. Cependant, je voulais mettre en place cette diapositive ici, simplement pour illustrer le fait que, parce que nous avons affaire à des objets maintenant, nous aurons à utiliser ces choses appelé comme, est égale à la chaîne, qui est, comme par hasard, une méthode de chaîne ou un objet NSString. Donc, le mot, dans ce cas, est une NSString objet, et il a une méthode appelée est égale à la chaîne, puis nous passons dans une chaîne codée en dur à voir si ceux qui sont égaux à une autre. Vous avez des questions à ce jour? OK. Et, je voudrais revenir sur une déclaration pour aussi. Ainsi, par exemple, si nous voulions boucle au-dessus de la longueur d'une chaîne en C, cette devrait vous être familier. Et, en Objective-C, je ne veux de mettre en évidence ce, en quelque sorte, méthode appelée comptage. Eh bien, en fait, permettez-moi il suffit de prendre ce retour. Count est une méthode de tableau. Cependant, il est plus spécifiquement un propriété de tableau, c'est pourquoi vous peut utiliser la notation par points. Mais je ne veux pas entrer dans trop de ce truc conceptuel, je veux juste vous montrer comment les choses allaient chercher comme en Objective-C par rapport à C. Et aussi, je tiens à souligner que même si je me sers de NSUInteger devant tous mes i de en Objective-C, vous pouvez également utiliser int, int, car c'est totalement valable en Objective-C, aussi. Oui? PUBLIC: Est-il juste stylistique, ou est - RHED SHI: Ouais. Donc, comme vous le verrez - , la question était est que juste une question de style. Comme vous le verrez, j'ai, en quelque sorte, étoile astérisque chose vers le bas au fond, et ce lien vous amène à un débordement de la pile former, où quelqu'un explique la différence entre un int dans NSInteger et un NSUInteger. Et oui, vous pouvez lire à ce sujet plus tard. Ces diapositives seront, bien sûr, s'offrent à vous. Voyons. OK, impressionnant. Donc, ce qui est également inclus dans la glissière parce que je pensais que c'était un grand site qui vous présente à la syntaxe Objective-C. Donc, en fait, pourquoi ne pas aller vivre Chrome et consultez ce site? Droite. Donc, ce que je veux vous montrer gars ici est cette image. Donc, cela est, en quelque sorte, va être ce vous allez voir à l'intérieur de tout fichier de Xcode. En fait, pourquoi ne prenons-nous pas juste une moment pour, en quelque sorte, prendre ce po Donc, ce livre - c'est l'objet qui nous avons affaire. Et puis, il est de toute évidence va être hérité d'un autre objet, mais vous n'avez pas à vous inquiéter à ce sujet. Et puis, peut-être, a certaines variables membres. La chose importante que je veux vous montrer sont les méthodes d'instance, ici. Ainsi, les méthodes d'instance sont désignés par ce signe moins. Et puis, comme vous le verrez, nous sommes commencent déjà à voir le paradigme pour déclaration de méthode, non? Le type de retour, le nom de la méthode, et puis le type de l'argument, et puis le nom de l'argument. Et ce signe moins signifie que c'est un Procédé d'exemple, ce qui signifie que ces méthodes ne sont disponibles que pour les objets qui ont été instancié. Pour contraster que, les méthodes avec un plus signer en face d'eux sont de classe méthodes, ce qui signifie que vous pouvez appeler ces méthodes, même si vous n'avez pas un objet encore créé. Ainsi, pour un exemple clair, NSString est une classe. Et vous pouvez appeler, par exemple, méthodes de classe sur NSString - le réel, comme, mot NSString. Toutefois, pour pouvoir utiliser ceux-ci méthodes, vous avez réellement besoin pour créer une chaîne. Par exemple, NSString star string est égal à à guillemet, bonjour monde. Et puis, vous pouvez utiliser ces méthodes - méthodes d'instance - sur cette chaîne mondiale de bonjour. Donc, c'est la différence entre méthodes d'instance et des méthodes de classe. Et, nous avons juste couvert cette partie. Les propriétés sont une autre chose qui sont l'intérieur des objets, essentiellement. Et vous les déclarez avec la propriété au mot-clé. Vous avez ces options, ici, que je vous expliquerai plus tard quand nous entrons dans une démo. Oui? Salut. PUBLIC: Pourriez-vous zoomer, s'il vous plaît? RHED SHI: Oh oui. Désolé. PUBLIC: Je vous remercie. RHED SHI: Cela devrait être beaucoup mieux. PUBLIC: Ouais. Merci. RHED SHI: Oui, s'il vous plaît rappelez-moi si J'oublie pour zoomer ou dézoomer. Donc, c'est tout ce que je voulais à vous montrer pour - whoa, c'est beaucoup - pour ce site. Donc, revenons à nos diapositives. En fait, maintenant, nous allons prendre un moment à plonger dans une démo. Donc, nous allons commencer par une nouveau projet Xcode. Donc, si vous ouvrez Xcode sur tous vos machines, il convient de prendre un certain la page où il est dit, comme, ouverte en place d'un projet existant ou un nouveau projet, et vous devriez cliquez sur un nouveau projet. Et puis, il faut prendre vous à cet écran. Oui? PUBLIC: Si nous n'avons pas un Mac, ne nous juste un peu froid? RHED SHI: Ou rechercher sur avec quelqu'un, ouais. Ouais. Vous pourrez vous détendre aussi. OK. Donc, ce que nous allons faire en premier, maintenant, est, en fait, nous allons faire un seule application de vue. Donc, si vous remarquez, ce qui est bien sur Xcode et le soutien d'Apple pour développeurs, c'est que vous avez beaucoup de modèles pour travailler avec déjà. Vous pourriez, par exemple, faire une l'application maître-détail. Vous pouvez faire un jeu - et en fait, je ne vais pas entrer dans les jeux, parce que les jeux sont une autre histoire pour le développement iOS. Et ils genre de séparation, je ne vais pas entrer dans les détails. , Basé sur la page, vous avez applications. Vous disposez d'une application onglet - si voulez, par exemple, Bank of America a probablement, comme, une application onglets. C'est ceux où vous avez les boutons en bas. Et puis, vous avez un jeu de Kit Sprite. Ou vous pouvez travailler à partir de zéro, ce qui c'est ce que nous ferons plus tard. Mais nous allons d'abord commencer par une seule application de vue. Ensuite, il va demander un nom de produit, et nous ne pouvons faire l'essai. Nom de l'organisation - oui, nom de l'organisation, entreprise identifiant - ceux qui sont importants si vous allez de mettre votre application sur l'App Store. Autre que cela, votre code va fonctionner tout à fait bien sans cela. Cela va être important si vous voulez - si, en soi, comme, mettre votre application sur votre téléphone ou quelque chose, et le test il, vous le savez, dans la vie réelle - ce sera important. Ceci tend à être généralement associée avec une sorte de compte développeur avec Apple. Et oui, je sais, sans doute, beaucoup d'entre vous n'aura pas de comptes de développement. Je sais que l'université a un. Je pense que CS a un. Mais, vous pouvez m'envoyer un email et je vais essayer pour comprendre cela pour vous. Mais en ce moment, je viens de mettre en des choses de l'espace réservé ici. Et vous pouvez, bien sûr, ici, choisissez si vous voulez qu'il soit uniquement dans iPhone, iPad dans, ou les deux - application universelle. Donc, pour le moment, nous allons faire universel, juste de voir les deux côtés de la plate-forme. Voyons. Donc, maintenant, je vais sauver dans une sorte de dossier. Peu importe où - vous peut toujours se déplacer plus tard. Et, maintenant, nous sommes amenés à notre projet Xcode. Je ne voudrais pas vous soucier de tout cela. Je suggère de ne pas toucher tout de ce, sauf si vous savez exactement ce que que vous faites. Donc, tout cela, juste ignorer pour la plupart. Vous n'aurez pas besoin d'y toucher, et si vous faire vous gâcher certaines choses ici, il devient un peu difficile. Alors, pourquoi ne nous attendons pas à les fichiers sur le côté gauche dans notre navigateur. Ici, nous avons AppDelegate.h. Nous avons AppDelegate.m Donc, comme vous aurez avis, nous avons en-tête des fichiers, qui fin en point h, et nous avons mise en œuvre - effectivement, je agrandir OK. Permettez-moi agrandir Bon, alors vous avez en-tête des fichiers et vous avez des fichiers de mise en œuvre. En fait - OK. C'est un peu bizarre, mais garder avec moi. Ensuite, parce que nous avons choisi une vue unique application, nous allons être travailler avec storyboard. Donc, storyboard est quelque chose que Apple a mis au point pour aider vraiment développeurs prototyper rapidement leurs applications. Donc, c'est là que vous pouvez créer des une application sans avoir à écrire une seule ligne de code. Cependant, dans notre application de vue unique, nous n'avons, bien entendu, avons un déposer notre point de vue, qui est un contrôleur d'affichage. Donc, nous avons la tête et le fichier de mise en œuvre, ici. Et, je vais effectuer un zoom arrière maintenant, parce que nous devons travailler dans le storyboard. Donc, voici notre avis. Si nous, tout simplement, exécuter l'application à l'heure actuelle, il n'y a pas beaucoup d'excitant se passe. Donc, vous voyez cet écran blanc. OK? Et, dans notre secteur des services publics, nous pouvons ajouter un tas de choses différentes à elle. Donc, quand vous avez affaire avec des écrans dans iOS, contrôleurs de vue sont les objets qui encapsulent, en quelque sorte, votre point de vue. Ainsi, un contrôleur de vue toujours a une propriété appelée vue. Et ce point de vue, généralement, contient, vous savez, ce que vous envie de voir sur un écran. Donc, bien, disons simplement commencer par mettre, peut-être, peut-être une étiquette. Donc, nous allons mettre une étiquette sur il - coller dans le milieu. Donc, maintenant que j'ai cliqué sur l'étiquette, je peut aller dans l'inspecteur des propriétés et commencer à changer sa valeur. Appelons-CS50 couleurs. Et, je peux également changer la police. Ainsi, au lieu de système, de faire ce qui est la valeur par défaut, nous pouvons faire un un personnalisé. Nous pouvons changer - vous le savez, UltraLight, faire 32. Et puis, nous pouvons faire de notre grande boîte. PUBLIC: Pensez-vous que vous pouvez zoomer dans un peu plus, peut-être? RHED SHI: Ouais? OK. PUBLIC: il suffit de taper? RHED SHI: Voyons voir. Est-ce que ce travail? PUBLIC: Juste passer le Xcode? RHED SHI: Bien sûr. OK. Impressionnant. PUBLIC: L'étiquette sous? L'étiquette? RHED SHI: Qu'est-ce que c'est? PUBLIC: Que déroulante était l'étiquette sous? RHED SHI: Donc, la question est, qu'est-ce déroulante était l'étiquette sous? Il faut, tout simplement, être là-dessous. Je suppose que c'est une chose de cube. Mais généralement, c'est la valeur par défaut - Je vais ici jusqu'à ce que je trouve une étiquette. Ouais. Alors maintenant, nous avons notre label. Disons le centrer. Et Xcode nous donne des lignes directrices pour les objets de centrage. Donc, maintenant nous allons exécuter notre code. Nous y voilà. Donc, nous avons CS50 couleurs. Et maintenant, nous allons mettre un bouton là-bas, non? Parce que nous voulons faire cette interactive. Alors, mettons ici un bouton. Et nous appelons ce bouton "robinet ici pour continuer. "Nous allons centrer, aussi En fait, il est déjà centré. Ouais. Donc, maintenant nous avons un bouton. Et si nous courons ce nouveau, nous allons d'avoir un joli petit bouton ici. Et je peux cliquer, mais il ne le fait pas quoi que ce soit, parce que nous n'avons pas fait quoi que ce soit avec le bouton encore. Donc, nous allons créer une autre vue, non? Donc, disons que je veux exploiter ce bouton et je veux aller vers une autre page - autre point de vue. Ce que je vais faire, je peux créer un contrôleur de vue, non? Maintenant, je vais cliquer sur mon bouton, puis, l'important, c'est que je vais cliquez sur - ou - oui, le contrôle de la presse sur mon clavier. Contrôle. Cliquez sur le bouton, puis faites glisser. Alors, n'oubliez pas de maintenir la touche de commande. Faisons ça. Ainsi, détenir le contrôle, cliquez et faites glisser à ce que vous voulez faire. OK. Et maintenant, j'ai plusieurs options ici. Je peux soit pousser, ou que je peux faire un modale, ou je peux faire une coutume. Poussoir est que si vous avez un dispositif de commande de navigation. À l'heure actuelle, notre première vue contrôleur n'est pas à l'intérieur de toute dispositif de commande de navigation. Ainsi, le dispositif de commande de navigation est l'un qui vous donne la touche de retour sur l'application iOS où vous avez, vous savez, que haut, en quelque sorte, la barre d'épaisseur - où vous pouvez revenir en arrière, ou avant, et cetera. En ce moment, je n'ai pas. Et donc, c'est pourquoi je ne peux pas faire un effort. Alors, j'ai cliqué sur poussoir accidentellement, ici. Et effectivement, nous allons exécuter le code, et il devrait s'écraser sur moi. Seulement si j'appuie sur le bouton si, si - droite. Donc, cela est mauvais. Et, comme vous pouvez le voir, ici, nous avoir le message d'erreur. Ainsi, «enchaînements Push ne peuvent être utilisés lorsque contrôleur de source est géré par un instance de contrôleur de la navigation de l'interface utilisateur ". Ainsi, parce que ce n'était pas à l'intérieur d'un dispositif de commande de navigation, Je ne pouvais pas le faire. Donc, maintenant, je vais retourner à la dossier, datant de storyboard. PUBLIC: Quelle est la navigation contrôleur, encore une fois? RHED SHI: Donc, maintenant je vais vous montrer. Voyons. Donc, je vais cliquer sur ce point de vue contrôleur, et puis je vais aller à produit - en fait, non, désolé - éditeur. Et je vais aller en - effectivement, je n'ai clique dessus? Non. Nous y voilà. Je vais monter dans l'éditeur, descends à incorporer dans, puis navigation contrôleur. OK. Et, mon espace de travail ressemble vraiment malpropre, nous allons donc nettoyer cette place. Donc, tout cela est storyboard. Et de cette manière - OK, arrêtez - Je peux rapidement construire quelque chose comme ceci. Et puis, maintenant, je peux revenir en arrière, vous savez? Mais c'est un peu ennuyeux, non? Donc, ce que je veux faire, c'est, je ne veux pas à faire, tout simplement, une vue contrôleur. Disons que je voulais vraiment faire une vue de la table de commande, afin que je puisse mettre en quelques belles couleurs, dans la table. Donc, maintenant que je l'ai mis dans ma vue de tableau contrôleur, j'ai besoin de le connecter à nouveau de ce bouton à l' contrôleur de vue. Donc, je dois faire mon contrôle, cliquer, glisser chose de nouveau. Et maintenant, je peux faire pousser, parce que je l'intégrer à l'intérieur d'un dispositif de commande de navigation. PUBLIC: contrôleur de navigation juste vous permet d'aller d'un endroit à l'autre? RHED SHI: Oui. Donc, plus techniquement, il est un objet où - si, à l'intérieur de la navigation objet de contrôleur, il assure le suivi d'un tableau. Et ce tableau contient toutes les ultérieur voir les contrôleurs. C'est pourquoi, lorsque vous appuyez sur le dos, il va revenir à la page précédente. Parce que le dispositif de commande de navigation objet, ou le code qui prend soin de cet objet, a un tableau qui maintient suivi de ces contrôleurs de vue, et peut alors, vous le savez, la vue DQ contrôleur et de vous redonner la précédent. Donc, c'est quelque chose de technique, mais - et je vous montrerai plus tard dans code, si nous avons le temps. Je suis un peu à court de temps, mais - Ainsi, avec la vue sur la table, ce que nous pouvons faire est de - Il est généralement réglée automatiquement Dynamic Prototype - nous allons rendre cellules statiques, sinon nous allons rencontrer quelques problèmes. Et puis, disons que je vais d'avoir une section. Ainsi, les articles est comme - si vous avez déjà vu l'application de la musique, quand vous avez artistes, sections serait être les A travers Z's - les lettres - et puis, vous savez, l'individu lignes seraient les noms des artistes. Et donc, ce qui est cool ici, c'est que je peux accéder à tous les objets à l'intérieur de mon storyboard à travers ce menu déroulant, trop. Donc, je vais cliquer sur mon article, et je veux, vous le savez, peut-être cinq lignes. Et puis, à l'intérieur de chaque ligne, Je tiens à mettre une étiquette. Et je vais appeler ce bleu. Et puis, je veux mettre une vue de l'interface utilisateur, vous savoir, peut-être pour, comme, une petite boîte. Alors que je peux montrer aux gens un aperçu de la couleur. Et je vais revenir à la propriété et changer cette couleur pour, oh, je ne sais pas savoir, celle-ci. Et puis, vous remarquerez également, ici, quand j'ai les accessoires, je peux avoir beaucoup des différents accessoires que vous voyez habituellement. L'indicateur de la divulgation, le détail, ou coche, ou tout simplement détail. Alors, peut-être que nous pouvons faire, comme, une divulgation indicateur, par exemple. Et puis, pourquoi ne prenons-nous pas ceux-ci, copie coller, et les mettre dans le prochaine ligne de la table. Ainsi, nous pouvons appeler cela jaune. Et je pourrais avoir à étendre cette. Faisons jaune. Et de cette façon, nous pouvons copier coller notre chemin vers le bas. Qu'est-ce? Violet. Donc, ce sont tous les CS50 typique couleurs que vous avez vu en classe - effectivement, désolé - ou sur le site Web. J'espère que vous les gars peuvent voir ce que je fais ici. OK. Dernier. PUBLIC: Comment avez-vous ajouté la rangée d'abord? RHED SHI: Donc, la question était de savoir comment ai-je ajouter la ligne départ? Je suis allé dans cette section de la table - ou mais je peux sélectionnez la section de table - et puis, ici, j'ai mis à jour le nombre de lignes. Et, permettez-moi d'espérer que cela fonctionne. OK. Voyons voir si cela fonctionne. Oh, parfait, impressionnant. OK. Alors que je construis ma démo, certains les choses ne sont pas alignés, donc, merci pour les applaudissements. Ouais. Donc, nous allons voir. Nous allons faire ce neuf juste pour faire tout - ou plutôt, disons simplement tourner tout de ceux-ci dans la divulgation indicateurs. Et puis, ce que je veux vous montrer, aussi, était de savoir comment je peux prendre chacun de ces lignes de la table et de les faire interagir - oh. Non. Oh. Aussi, je tiens à vous montrer - ici, je peux mettre le titre de mon contrôleur de navigation, non? Donc en fait, vous remarquerez, dès que je intégré ce contrôleur de vue de l'intérieur du dispositif de commande de navigation, on voit cette barre de navigation en haut de notre représentation storyboard d'un contrôleur d'affichage. Et oui, cela nous donne, comme, un visuel, en quelque sorte, de guider notre écran visible. Ce va évidemment la barre de navigation. Et ce que je veux faire rapidement, maintenant, est mis dans un autre - si ce contrôleur de vue de tableau que j'ai fait par prendre un de ces et en le faisant glisser ici, et c'est ce qui m'a permis de rapidement, vraiment, de créer une vue de tableau contrôleur. Si nous avons le temps cependant, vous aurez voir que, par programmation, c'est un peu plus difficile de créer une table contrôleur de vue, car il sont un couple de méthodes qui sont vous sont nécessaires pour, en quelque sorte, écrivez dans l'ordre pour la vue de table contrôleur pour être affiché correctement. Cependant, je tiens à vous montrer, maintenant, un exemple où, si je prends ce, par exemple - J'ai mis dans un autre contrôleur de vue. Et maintenant, disons que je veux contrôler alt mon premier bleu ligne de la table ici. Et je tiens à appeler ce bleu. Et puis - Voyons. Je suis à la vue, et je peux changer l'arrière-plan en bleu. Et donc, un avis, ici, cette liste déroulante menu vous donne aussi une hiérarchie de tous de ces objets. Donc, une chose importante à noter, ici, est que toutes ces choses, ici - ce contrôleur de vue de la table, la table vue, vue de tableau section, vue de tableau cellule - tous ces éléments sont objets, dans le code. Donc, vous savez, une étiquette est maintenant sous le point de vue du contenu, etc. Ainsi de suite et ainsi de suite. Donc, si nous courons ce code, nous devrait voir quelque chose - Voyons si ce - ouais. Donc, là, nous allons. Mais, si nous ne le faisons pas, aucun de ces autres choses. Droite? Alors que celui-ci fonctionne. Et, pour des raisons de temps, je ne veux pas aller en, vous le savez, la mise vers le bas les autres. Et c'est la fin de, en quelque sorte, storyboard - ce que je voulais montrer vous pour storyboard. Et, j'ai un exemple élaboré, effectivement, ici. Donc, c'est le storyboard que j'ai fait auparavant. Donc, comme vous pouvez le voir, ce n'était mon contrôleur de navigation. Ensuite, j'ai eu mon premier contrôleur de vue, puis j'ai eu mon contrôleur de vue de table, et puis j'ai eu tous ces - si auparavant, je faisais quelque chose de très différent. Donc, excusez ces choses. Je vais probablement le nettoyer plus tard avant J'envoie le tout à la production. Mais, si nous courons, nous verrons que toutes les options sont à notre disposition. Sauf que je n'ai pas fait les milieux ces couleurs. Donc, belle application simple. Maintenant, nous allons essayer d'aborder ce programme. OK. Donc, pour ce faire, nous allons tout simplement pour démarrer un nouveau projet Xcode. Nous faisons une application vide maintenant, parce que nous ne voulons pas avoir la storyboard. Donc, je me suis simplement limiter à pas utiliser l'une des story-board, et un l'application ne sera pas vide me donner un storyboard. C'est juste pour éviter moi de tricher. Voyons. Attendez. Ai-je - Oui. OK. Droite. Donc, ici, nous nous retrouvons avec rien d'autre que du code. Alors, permettez-moi de passer cette fenêtre un peu plus. Droite. Comme vous pouvez le voir ici, les seuls fichiers qu'on nous donne sont AppDelegate.h et point m, et nous n'avons pas storyboard plus. Donc, si nous courons, nous allons encore accéder à l'écran blanc, Dieu merci. OK - écran blanc, mais rien d'autre. Et, ici, c'est le plus important. C'est là que l'action se passe. Dans les versions précédentes, il ya généralement pas de code ici, mais la storyboard fournit essentiellement le code pour cette partie. Je ne vais pas entrer dans les détails sur la façon. Et ce que nous voulons faire maintenant, c'est que nous voulons d'aller ici, et ce petit espace commence la création de notre application à nouveau. Donc - oui? PUBLIC: Zoom? RHED SHI: Zoom. Oui, bien sûr. OK. Je vais taper, donc cela ne devrait pas trop d'importance. OK. Donc, d'abord, n'oubliez pas que nous voulions créer un contrôleur de la navigation, à droite? Et aussi, comme vous pouvez le voir ici, Xcode fait un excellent travail de auto-remplissage. Donc, comme vous le verrez, les noms de tout sont beaucoup plus longtemps que d'habitude, mais Xcode remplit pour vous. Donc, je ne peux appuyer sur Entrée. Donc, je veux créer une navigation de l'interface utilisateur pointeur de contrôleur, et je peux l'appeler navigationController. Maintenant, ce que je fais maintenant? Après ce signe égal, je dois, d'abord, créer à l'intérieur de la mémoire. Donc, je vais faire NavigationController alloc - donc, ce qui est similaire à malloc, que vous les gars utilisés dans C - et puis, je vais à init il. Donc, il est vraiment important que tout objet que vous créez, vous voulez alloc et init il. Cela va créer et instantialize à l'intérieur de la mémoire, et maintenant vous pouvez l'utiliser. Tout va bien? Si vous ne le faites pas, votre objet ne pas exister, et vous rencontrerez un tas de problèmes. Et puis, je veux créer un contrôleur de vue, non? Donc, je veux créer un UIViewController étoiles - oui, tout est un pointeur dans Objective-C, et je vais faire quelque chose de similaire, ici - alloc, init. OK. Et puis ce que je vais faire, je suis aller - si, rappelez-vous quand nous avons fait l'incorporer dans le contrôleur de navigation? C'est ainsi que vous le faites dans le code. Vous allez faire navigationController pushViewController - PUBLIC: [inaudible]. Cela se produira pour nous, ou -? RHED SHI: Oh, oui. Non. Il m'aime mieux. Non, ça va marcher pour vous aussi. Donc, ce sont toutes les méthodes. Donc pushViewController est un procédé, et aussi, plus particulièrement, il s'agit d'un méthode d'instance de l'interface utilisateur dispositif de commande de navigation. Parce que j'ai dû créer ma navigation de l'interface utilisateur étoiles de contrôleur, puis je peut appeler cette pushViewController sur mon instance spécifique d'une navigation de l'interface utilisateur contrôleur. PUBLIC: Devons-nous faire exactement mot, ou ça existe déjà pour cela? RHED SHI: Oui, parce que c'est une méthode. C'est comme une fonction. C'est comme printf. C'est comme scanf. C'est comme strcompare. Sauf qu'il sait ce que vous voudrez peut-être taper, et notez qu'il y aura toujours venir avec des choses qui sont légalement autorisé pour vous. Donc, si rien ne se passe ici, alors quelque chose ne va pas. Donc, pushViewController. Donc, maintenant, je veux pousser mon nouvellement créé UIViewController, puis, animation - peut-être pas. Parce que cela va être le premier contrôleur de vue. Je veux dire, même si je ne fais animée, il ne sera probablement pas se montrer, parce c'est le premier écran. Et n'oubliez pas les parenthèses. Alors, rappelez-vous comment nous avons utilisé les supports? Et à l'intérieur des parenthèses, le objet fait appel à une méthode - si notre objet est la navigation contrôleur, et le procédé est un poussoir contrôleur de vue animé. Et voir comment il prend deux arguments, et ils sont séparés par l', en quelque sorte, mots, et un colon. Donc, Objective-C tente de rendre agréable et facile pour vous de lire à haute voix - votre code - et avoir demi, en quelque sorte, faire sens. Cependant, que cela soit fait n'est pas suffisant. Permettez-moi de zoom arrière maintenant. Faire tout cela ne suffit pas à obtenons ce que nous avons précédemment. Donc, ici, vous remarquerez qu'il ya fait ne va pas être une sorte de bar, ici, non? Il n'y a pas la barre de navigation, ce qui signifie que nous n'avons pas encore obtenu il. Et nous pouvons tester que sur, également, par, peut-être, en changeant l'arrière-plan de ViewController, non? ViewController.background-- ah. Alors, comment ViewController n'avait pas une couleur de fond, même si je voulu pour y accéder? Et c'est parce que ViewController est un récipient pour la vue. Ainsi, il possède une propriété de vue, qui a alors une couleur de fond. Et, je peux le mettre, en quelque sorte péniblement, en appelant la couleur sur l'objet UIColor. Alors, avis ici, redColor est une méthode. C'est une méthode de classe de UIColor. Parce que je n'ai pas eu à créer un exemple réel d'un UIColor afin pour appeler la méthode sur elle. Je viens, tout simplement, l'appelais sur le nom de type analogue. J'ai, comme, appelé sur int, int avait si, analogues, une méthode à elle, par exemple. Et donc, si nous courons ce code, nous allons notez que le fond est effectivement pas rouge. Il est encore blanc. Et comment nous pouvons contourner c'est-à- remarquez comment il ya le self.fenetre. C'est, comme, le récipient final pour votre application. C'est la chose ultime qui contient tout sur l'écran, pour une application iPhone ou iPad. Et, idéalement, self.fenetre a cette propriété appelée rootViewController. Et que va être le pointeur à le premier contrôleur de vue de l'intérieur de votre application. Donc, ce que nous voulons faire ici, maintenant, c'est pour définir ce que la hauteur de notre navigation contrôleur. Droite? Parce que, techniquement, la navigation contrôleur est notre première vue contrôleur. Il garde la trace d'un éventail d'autres avis contrôleurs, et nous avons poussé cette contrôleur de vue dans ce tableau dans le dispositif de commande de navigation. Donc, vous ne voulez pas le faire. Ce ne serait pas vraiment vous aider. Vous voulez faire cela, si vous voulez faire un contrôleur de navigation, dont la plupart vous n'aurez probablement parce que vous voudrez pour, en quelque sorte, avoir une sorte de, comme, menu pour revenir à ou une Page d'accueil pour revenir à, plutôt que d'un écran vide. Oui? PUBLIC: Est-il mal à l'aise pour effectuer un zoom avant sur la - RHED SHI: Ouais. Donc, oui. Il s'agit du code, et maintenant Testons-le. Donc, là, nous allons. Magie. Donc, OK. Merci. OK. Alors maintenant, ce que nous voulons faire, c'est - si, nous sommes en quelque sorte limités, ici, non? Nous pourrions potentiellement tout écrire à l'intérieur de cette seule fonction. Mais, ce n'est pas la façon dont le développement iOS travaille habituellement. Donc, ce que nous allons faire, c'est que nous sommes va créer de nouveaux fichiers. Mais, plus précisément, nous allons créer une autre classe Objective-C, ou un autre objet - classe et les objets sont interchangeables ici. Et, voici comment j'ai pu, éventuellement, créer une autre classe de contrôleurs U. Donc, c'est une sous-classe, comme vous le verrez, ici, c'est une sous-classe de la vue de l'interface utilisateur de commande, mais je ne peux appeler un autre nom ici. Je pourrais appeler ce CS50, que je pourrais appeler ce contrôleur de vue, je pourrais appeler ce contrôleur de vue de bla - ce que je veux. C'est juste le nom de la classe. Cependant, il va être important parce que, essentiellement, ce que je fais ici, c'est que je crée un autre nom de classe. Donc, ça va être, comme certains sorte de type ou un objet. Ainsi, il devrait être un peu générique. Il ne va pas être très précis. Et aussi, je tiens à signaler ces deux options. Parce que nous faisons tout à l'intérieur de code, il est parfois beaucoup plus facile à amener dans un fichier d'interface, de telle sorte que Je peux littéralement glisser-déposer, comme nous l'avons fait plus tôt avec storyboard - vous le savez, une étiquette ou un bouton, ou tout autre chose. Et donc, xibs sont des fichiers qui vous permettent de faites cela, et vous devez le raccorder à ce fichier de contrôleur de vue. Donc, je vais délibérément pas vérifier. Habituellement, je voudrais vérifier cela, et si je ne l'ai fait pour l'iPhone ou l'iPad, je serait vérifier et tout simplement un pour, vous le savez, l'iPhone ou l'iPad. Mais depuis que je fais universel, je vais pour créer deux de ces plus tard. Donc, je vais délibérément décochez cette. C'est aussi très important. Un grand nombre de fois, j'ai eu des bugs où cela n'a pas été vérifié. Et, évidemment, ce fichier n'est pas, en quelque sorte, comme, inclus ou importés l'intérieur de ce dossier test. Et donc, mon code n'a absolument aucune idée de l'existence de ce fichier, et qui provoque beaucoup de douleur et des heures de débogage. Mais, assurez-vous juste cette case est cochée si que, vous le savez, l'objectif de cette fichier est pour cette application. OK. Donc, maintenant, nous avons créé deux nouveaux fichiers. Et ces fichiers semblent très vide. Et, effectivement, nous allons continuer aussi par la création des fichiers de XIB. Donc, déjà, j'étais dans la Cocoa Touch déroulante. Maintenant, je vais aller dans l'Utilisateur Interface tactile, et comme vous pouvez le voir, je peut créer un storyboard. Donc, même j'ai commencé avec un vide demande, je peux encore utiliser un storyboard. Bien, ça devient compliqué en termes de la façon dont vous voulez vous connecter que de votre code. Donc, je ne vais pas y aller. Mais, ce que nous voulons faire est maintenant créer une vue. Et vous pouvez choisir pour un iPhone ou un iPad. Et généralement, pour désigner l' différence - si vous faites une application universelle - soit vous mettez un iPhone de soulignement, ou vous pouvez faire un Twiddly. Il n'a pas vraiment d'importance. C'est tout simplement pour vous faire la différence qui est vue pour ce dispositif. Et si, maintenant regarder. J'ai un écran que je peux travailler avec. Et si, par exemple, je peux mettre une étiquette ici, vous le savez, et je peux aussi mettre un autre bouton ici. Je ne vais pas changer les valeurs ici. Mais, ce qui est important ici est que le propriétaire du fichier - oui, je suis à l'intérieur de l'iPhone vue, le fichier iPhone xib. Et dans cette zone de navigation ou menu déroulant, je veux aller à l' Le propriétaire du fichier. Et c'est vraiment l' étape importante ici. Je veux faire le point de vue de classe contrôleur, de sorte que ce fichier est XIB va être associée à mon contrôleur de vue. Et tout ce que je fais à l'intérieur de mon point de vue contrôleur est programme se reflétera sur ici. Donc, toutefois, remarquer que - effectivement, nous allons faire ce point de vue fond bleu, par exemple. Ou vert. Et puis, si vous remarquerez, de retour dans ce code, c'est là que nous sommes arrivés à notre dispositif de commande de navigation. Même si nous avons fait cette étape, il est encore va être rouge, pas vert. Et il ya une raison. C'est parce que, quand nous inited notre contrôleur de vue, ici - désolé, c'est un peu fou - quand nous inited notre contrôleur de vue ici, il nous inited du type général UIViewController. OK? Donc, nous n'avons même pas fait avec cette classe. Donc n'oubliez pas, c'est comme une classe maintenant. Il peut être considéré comme un type, juste comme UIViewController est un type. Et pour l'utiliser, ce qui nous devons faire est de l'importer - ViewController d'importation - et, comme vous pouvez le voir, il AutoFills pour moi. Donc, ViewController - et maintenant, ici, je peux changer ce UIViewController à ViewController. Et maintenant, voici, je peux changer ce à ViewController. Lançons ce nouveau. Il est encore rouge. Et la raison pour laquelle il est encore rouge c'est parce que - woah, ce qui s'est passé? Nous voulions associer ce XIB déposer auprès du contrôleur de vue. Toutefois, afin de réellement faire que, nous avons besoin d'aller dans ce. Et quand nous faisons l'init, nous voulons faire initWithNibName, et alors nous voulons faire la chaîne à View_iPhone, par exemple. Vous pouvez ignorer le paquet ici. Et cela va permettre nous, en fait - uh oh, il ya un problème. Droite. Et oui, il ya un problème parce que, dans notre dossier vue XIB, nous avons une étiquette et nous avons un bouton. Cependant, même si nous avons connecté les deux, il n'y a rien à l'intérieur de ViewController.h ou ViewController.m qui reflètent les boutons ou les labels. Donc, nous avons besoin d'écrire ceux que propriétés du contrôleur de vue. Donc, c'est la façon dont vous déclarez une propriété. Il faut en, habituellement, ces deux options. Aux fins de nous et de ce séminaire, Je dirais que, en général, la plupart des propriétés sont nonatomic et à conserver. Vous pouvez lire par Google la recherche, vous le savez, la différence entre nonatomic et conserver sur vous savez, Google ou quelque chose. Et je vais vous emmener, comme, Stack Débordement, où les gens auront réponses pour les différences entre ceux-ci. Mais pour l'instant, c'est ce que nous vouloir se préoccuper. Et nous voulons faire une étiquette de l'interface utilisateur, étoile, et nous pouvons l'appeler ce que nous voulons. Nous pouvons appeler cela, vous le savez, l'étiquette. Et, nous allons créer une autre une pour le bouton. Et n'oubliez pas d'inclure l'astérisque, parce que nous traitons avec des pointeurs un peu partout à l'intérieur de l'Objective-C. Cependant, cela toujours pas à résoudre le problème, comme vous pouvez le voir ici. Et la raison en est que, chaque fois que nous voulez connecter un label de fichier XIB ou un bouton pour le programme, ou l'en-tête et le fichier de mise en œuvre, nous voulons ajouter ce morceau de code - sortie. Notez qu'il s'agit d'un mot-clé. Et, dès que j'ai fini de taper que rupture, il devrait avoir ces deux cercles, ici. Habituellement, ils ne sont pas remplis po Je ne sais pas pourquoi ils sont. Mais généralement, vous devrez manuellement connectez-les en allant de ce côté de le secteur des services publics. Et si, en ce moment, j'ai mon label choisi, et je veux faire glisser cette nouvelle référence prise au propriétaire de mon dossier, puis cliquez sur l'étiquette. Alors maintenant, enfin, cette étiquette est relié à cette étiquette. Et cette étiquette est ce que nous allons utiliser programme pour changer son texte, sa police, son arrière-plan couleur, etc. Alors, pourquoi ne pas le même pour le bouton? Et comme vous le verrez, pour le bouton, c'est un peu plus compliqué. Parce que, je veux dire, vous êtes censé appuyez sur un bouton, il a beaucoup d'options pour la façon dont les utilisateurs peut appuyer sur un bouton. Et puis, nous verrons plus tard que nous pouvons nous connecter à notre présent code pour le faire fonctionner. Donc, pour l'instant, nous voulons connecter au bouton réelle à l'intérieur de notre code. Donc, nous allons à la nouvelle sortie de référencement, puis faire le bouton. Maintenant, lançons ce nouveau. Uh oh. OK. Je ne sais pas ce qui se passe ici aujourd'hui. Whoa. Juste un instant, ici. En fait, pourquoi ne pas prendre un regarder un autre exemple dans pour gagner du temps. OK. Donc, voici le plus facilement préparés exemple pour ViewController. Comme vous pouvez le voir ici, j'ai inclus les propriétés de la étiquette et le bouton. Et puis, ce morceau de code ici - ce IBAction - était une connexion à ce bouton ici. Donc, comme vous pouvez le voir ici, Touch Up Inside est reliée au sélecteur appelé bouton enfoncé. Donc, nous pouvons passer par le mouvement nouveau, ici, en prenant Touch Up L'intérieur et en le faisant glisser à Propriétaire de fichier, puis Cliquez sur le bouton pressé. Maintenant, nous allons exécuter notre code. Alors maintenant, ce bouton fonctionne maintenant et nous mènera à la page suivante. Et, en termes de notre contrôleur de vue, c'est le morceau de code qui a eu soins de la touche pressée. Et il est important de noter ici, que J'ai créé un autre type de vue contrôleur appelé une table contrôleur de vue. Alors, ce fut semblable à dos dans storyboard, quand j'ai traîné un des ces contrôleurs de vue de table dans le story-board. Je crée un autre Pointeur vers le contrôleur de vue de table, alloc et init-ment, puis faire contrôleur de navigation auto de points, pousser ViewController, cette nouvelle viewController. Et j'ai mis l'animation oui, parce que maintenant à l'intérieur de mon application, et je veulent réellement voir l'animation va de la page d'accueil à la table contrôleur de vue. PUBLIC: Ne vous inquiétez encore sur la collecte des ordures? RHED SHI: Qu'est-ce que c'est? Non. Donc, la question est, avez-vous de travailler avec la collecte des ordures? Donc, Xcode 4 avait comme ARC, qui est comptage automatique de référence. Et donc, lorsque vous commencez à une nouvelle projet, vous souhaitez vérifier que, parce personne ne veut vraiment faire face à libérer de la mémoire et d'autres choses. Mais je pense que dans Xcode 5, il n'est même pas cette option sur le nouveau projet. Donc, automatiquement est-ce que pour vous. Oui? PUBLIC: Pouvez-vous exporter une PDF dans votre storyboard? RHED SHI: Oui, certainement. Donc, tous ces seront inclus dans code source, si vous les gars peut vérifier le projet Xcode réelle pour elle. Ouais? PUBLIC: Mais, je veux dire, comme, je peux imprimer un PDF avec mon storyboard? Si je veux simplement exporter le images à montrer que quelqu'un. RHED SHI: Oh oui. Je pense que, peut-être, vous pouvez simplement prendre une capture d'écran. Ouais, et leur envoyer un écran tir ou quelque chose. Ouais. Donc, nous allons voir. Dans l'intérêt du temps, je pense que c'est tout ce que je peux couvrir aujourd'hui. Mais, je sais que c'est, en fait, juste à peine de toucher la surface de l'iOS développement. Alors, s'il vous plaît n'hésitez pas à me contacter si vous avez des questions sur iOS développement. Et, je l'espère, je serai en mesure de nettoyer une partie du code de la source fichiers de code, de sorte que vous avez un certain vraiment beaux exemples de travailler avec. Autre que cela, si vous les gars vont à la CS50 Hackathon, je peut ou pas être là, et je peux aider avec un peu de développement iOS, aussi. Alors, merci beaucoup, les gars.