1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar] [iOS: Schreiben Apps Like a Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Dies ist CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Alles klar, alle, willkommen auf iOS: Schreiben Apps wie ein Boss. 5 00:00:12,000 --> 00:00:16,000 Dieses Seminar wird sich auf das Schreiben Apps für das iPhone konzentrieren 6 00:00:16,000 --> 00:00:19,000 und im Gegenzug schriftlich Apps für das iPad, und so sind wir im Grunde geht zu Fuß durch 7 00:00:19,000 --> 00:00:23,000 ein paar verschiedene Beispiele, wie man eine App zu machen, ein einfaches Spiel wie Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 oder wenn Sie mehr daran interessiert, eine App wie eine Art Newsreader 9 00:00:26,000 --> 00:00:30,000 oder etwas, das mit dem Internet habe ich darüber auch sprechen wird interagiert. 10 00:00:30,000 --> 00:00:32,000 Hier ist unsere kurze Tagesordnung. 11 00:00:32,000 --> 00:00:36,000 >> IOS apps sind in einer Sprache namens Objective-C geschrieben, 12 00:00:36,000 --> 00:00:39,000 und so ist dies ein bisschen ähnlich wie C, aber nicht wirklich überhaupt, 13 00:00:39,000 --> 00:00:41,000 so werden wir reden ein wenig über die Sprache selbst 14 00:00:41,000 --> 00:00:45,000 und dann, wie iPhone-Apps mit diesem app Programm namens XCode zu bauen, 15 00:00:45,000 --> 00:00:48,000 die, wenn man es nicht noch nicht heruntergeladen haben zögern Sie nicht, um den Download jetzt zu beginnen. 16 00:00:48,000 --> 00:00:50,000 Es ist mehrere Gigabyte. 17 00:00:50,000 --> 00:00:54,000 Es sollte kostenlos im App Store, so müssen Sie einen Mac haben 18 00:00:54,000 --> 00:00:57,000 idealerweise mit der neuesten Version von OS X. 19 00:00:57,000 --> 00:00:59,000 Wenn Sie nicht sind, kein Problem. 20 00:00:59,000 --> 00:01:02,000 Wir haben Macs im Science Center für Ihren Einsatz 21 00:01:02,000 --> 00:01:05,000 mit XCode installiert, und so fühlen sich frei, um die für die Entwicklung verwenden. 22 00:01:05,000 --> 00:01:07,000 Wenn Sie eine App machen wollen, aber keinen Mac, keine Sorge. 23 00:01:07,000 --> 00:01:09,000 Es gibt viel des Campus Ressourcen dafür. 24 00:01:09,000 --> 00:01:15,000 Und so ist, dann werden wir 2 größere Beispiele für verschiedene Anwendungen können Sie decken. 25 00:01:15,000 --> 00:01:19,000 Objective-C ist technisch eine so genannte Super-Set von C. 26 00:01:19,000 --> 00:01:24,000 Das bedeutet, dass jede C-Code auch gültig ist Objective-C-Code. 27 00:01:24,000 --> 00:01:29,000 Das bedeutet, dass wir irgendwie Kanal auf einige zusätzliche Funktionen C. abgeklebt 28 00:01:29,000 --> 00:01:33,000 Einige dieser Features sind nicht mit immer schreiben malloc wieder, Gott sei Dank, 29 00:01:33,000 --> 00:01:36,000 nicht zu müssen, um diese dummen Zeiger Sorgen und befreit sie und all das Zeug 30 00:01:36,000 --> 00:01:40,000 Sie hasste C, und es ist irgendwie verschwunden in Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Jetzt, Objective-C hat auch eine viel größere Standard-Bibliothek, 32 00:01:43,000 --> 00:01:47,000 so gibt es eine Menge mehr Funktionen erhalten Sie kostenlos innerhalb von Objective-C. 33 00:01:47,000 --> 00:01:50,000 Erinnern, wenn wir schreiben würden PHP bemerkten wir, dass wir aus ging 34 00:01:50,000 --> 00:01:54,000 diese kleinste Sprache der riesigen Bibliothek von all diesen verrückten Dinge, die Sie tun können. 35 00:01:54,000 --> 00:01:56,000 Das gleiche passiert in iOS. 36 00:01:56,000 --> 00:01:59,000 Es gibt Objekte für Dinge wie die buddhistischen Kalender, und wirklich nichts 37 00:01:59,000 --> 00:02:05,000 Sie können möglicherweise von wahrscheinlich existiert bereits in Objective-C-Implementierung zu denken. 38 00:02:05,000 --> 00:02:08,000 Das Ziel Teil der Objective-C verweist etwas 39 00:02:08,000 --> 00:02:11,000 namens Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 Dies ist eine Art ein neues Konzept, aber wir haben eigentlich vor allem gelernt, 41 00:02:14,000 --> 00:02:17,000 eine Menge von diesen Konzepten bereits. 42 00:02:17,000 --> 00:02:19,000 Die Idee hinter Object-Oriented Programming ist, dass du gehst zu strukturieren 43 00:02:19,000 --> 00:02:23,000 eine Menge Code um diese Dinge als Klassen bezeichnet werden, 44 00:02:23,000 --> 00:02:26,000 und diese Klassen sind wirklich structs verherrlicht. 45 00:02:26,000 --> 00:02:30,000 Innerhalb eines struct wir im Grunde gesagt, hier ist eine Sache, 46 00:02:30,000 --> 00:02:32,000 und dieses Ding kann Mitglieder. 47 00:02:32,000 --> 00:02:35,000 Zum Beispiel könnte ein Knoten in einer verknüpften Liste haben anderes 48 00:02:35,000 --> 00:02:38,000 wie ein Wert ist, ein Zeiger auf den nächsten Knoten in der Liste, 49 00:02:38,000 --> 00:02:44,000 und gemeinsam, dass Zeiger und dass der Wert dieses eine Instanz eines struct zusammen. 50 00:02:44,000 --> 00:02:47,000 Die Klassen sind sehr ähnlich, außer 51 00:02:47,000 --> 00:02:50,000 Klassen können auch Funktionen innerhalb von ihnen. 52 00:02:50,000 --> 00:02:54,000 Wenn wir eine Struktur deklariert, könnten wir nur sagen, int n oder Knoten * next. 53 00:02:54,000 --> 00:02:57,000 >> Jetzt mit Objective-C können wir tatsächlich legte Funktionen 54 00:02:57,000 --> 00:02:59,000 innerhalb dieser Dinge. 55 00:02:59,000 --> 00:03:03,000 Eine andere Sache, dass Klassen tun können, ist, dass sie Daten aus anderen Klassen erben. 56 00:03:03,000 --> 00:03:07,000 Zum Beispiel werden wir eine Reihe von eingebauten Objective-C-Klassen suchen. 57 00:03:07,000 --> 00:03:11,000 Einer von ihnen könnte die Klasse, die den Blick für einen Bildschirm repräsentiert sein, 58 00:03:11,000 --> 00:03:14,000 und so mit den Worten möchte ich meine eigene Ansicht zu implementieren 59 00:03:14,000 --> 00:03:18,000 wir im Grunde sagen, jemand über bei Apple, wohl wirklich nette Leute, 60 00:03:18,000 --> 00:03:21,000 schrieb diese Klasse für mich, und es Griffe Dinge wie die Darstellung von Buttons 61 00:03:21,000 --> 00:03:25,000 oder Rendering auf den Bildschirm, und wir würden uns sehr schmerzt 62 00:03:25,000 --> 00:03:28,000 alle diese Funktionalität selbst zu implementieren und so durch einfaches 63 00:03:28,000 --> 00:03:31,000 Erben Daten können wir sagen, alles, was Sie in dieser Klasse hat 64 00:03:31,000 --> 00:03:34,000 Ich möchte auch innerhalb meiner Klasse, und dann werde ich einige andere Sachen zu tun, 65 00:03:34,000 --> 00:03:37,000 nämlich Umsetzung einer App. 66 00:03:37,000 --> 00:03:40,000 Das ist, was das Wort Vererbung bedeutet. Wir werden sehen, ein konkretes Beispiel. 67 00:03:40,000 --> 00:03:42,000 >> Und schließlich ist der Schlüssel, mit Object-Oriented Programming, dass 68 00:03:42,000 --> 00:03:45,000 es führt zu Datenkapselung. 69 00:03:45,000 --> 00:03:48,000 In einigen unserer Problems setzt könnten wir diese großen, globalen Variablen 70 00:03:48,000 --> 00:03:51,000 und globals überall, und das ist, wie würden wir den Überblick über Zustand zu halten. 71 00:03:51,000 --> 00:03:55,000 Mit Klassen können wir beginnen Verkapselung Informationen innerhalb eines Objekts. 72 00:03:55,000 --> 00:03:58,000 Wenn wir einen Bildschirm auf unserer App haben, wissen wir nicht wirklich brauchen, um alle Daten aus haben 73 00:03:58,000 --> 00:04:01,000 ein anderer Bildschirm in unsere App Inneren, dass 74 00:04:01,000 --> 00:04:04,000 und so durch Verkapselung Dinge innerhalb von Klassen dies tatsächlich führt 75 00:04:04,000 --> 00:04:08,000 viel besser Code-Design, und das ist mit einigen zusätzlichen Funktionen möglich 76 00:04:08,000 --> 00:04:11,000 von Objective-C. 77 00:04:11,000 --> 00:04:15,000 Vorwarnung, ist die Syntax für Objective-C Bananen. 78 00:04:15,000 --> 00:04:19,000 Es ist wie nichts, was wir zuvor gesehen haben, 79 00:04:19,000 --> 00:04:22,000 so ist es ein bisschen eine Lernkurve gewöhnungsbedürftig 80 00:04:22,000 --> 00:04:24,000 Was zum Teufel bedeutet das? 81 00:04:24,000 --> 00:04:27,000 Aber wenn man einmal Vergangenheit, die anfängliche Lernkurve es wirklich, wirklich glatt ist 82 00:04:27,000 --> 00:04:29,000 mit dem Schreiben beginnen apps. 83 00:04:29,000 --> 00:04:33,000 >> Um eine Klasse zu deklarieren, zu sagen, hier ist meine Klasse, es existiert, 84 00:04:33,000 --> 00:04:35,000 und vielleicht sind hier einige Dinge, die ich werde zu einem späteren Zeitpunkt zu definieren, 85 00:04:35,000 --> 00:04:38,000 Ich werde @ interface sagen. 86 00:04:38,000 --> 00:04:41,000 Ich werde @ interface sagen. Ich werde zu geben meiner Klasse einen Namen. 87 00:04:41,000 --> 00:04:43,000 Und dann später irgendwo werde ich @ end sagen, 88 00:04:43,000 --> 00:04:46,000 und alles, was zwischen dem @ interface und @ end 89 00:04:46,000 --> 00:04:48,000 wird meine Klasse sein. 90 00:04:48,000 --> 00:04:51,000 Das wird das sein, was drin ist unserer. H-Dateien. 91 00:04:51,000 --> 00:04:55,000 Genau wie in C unserem. H-Dateien im Grunde gesagt, hier sind einige Dinge, die existieren wird. 92 00:04:55,000 --> 00:04:57,000 Ich bin nicht unbedingt sagen, was sie noch tun, 93 00:04:57,000 --> 00:04:59,000 aber der Compiler muss wissen, dass sie existieren. 94 00:04:59,000 --> 00:05:04,000 Später im Inneren unseres. M-Dateien-da m für Objective-C 95 00:05:04,000 --> 00:05:08,000 wird, wo wir tatsächlich zu definieren, was diese Klassen zu tun. 96 00:05:08,000 --> 00:05:11,000 Ähnlich wie unsere. C Dateien, sofern wir eine Implementierung für Funktionen. 97 00:05:11,000 --> 00:05:15,000 Inside of our. M-Datei werden wir hier zu sagen ist, was alle Funktionen 98 00:05:15,000 --> 00:05:18,000 Innenseite meiner Klasse, was sie tun. 99 00:05:18,000 --> 00:05:22,000 Und schließlich, im Inneren einer Struktur konnten wir sagen im Inneren dieser geschweiften Klammern 100 00:05:22,000 --> 00:05:25,000 int n oder Knoten * next, 101 00:05:25,000 --> 00:05:28,000 und in Objective-C werden wir Benutze das Stichwort @ property, 102 00:05:28,000 --> 00:05:31,000 und dies ist, was los ist, um die Eigenschaften zu definieren, 103 00:05:31,000 --> 00:05:36,000 oder die nicht-Funktionen, die ein Teil meiner Klassen sind. 104 00:05:36,000 --> 00:05:40,000 >> Aufrufen von Funktionen in Objective-C ist auch Bananen. 105 00:05:40,000 --> 00:05:43,000 Wenn wir die Funktionen in C deklariert wir sagten so etwas wie int foo 106 00:05:43,000 --> 00:05:46,000 und offenen paren und dann gab es eine Liste von Argumenten. 107 00:05:46,000 --> 00:05:51,000 Dies ist, was erklärt Methoden oder Funktionen sieht wie in Objective-C. 108 00:05:51,000 --> 00:05:54,000 Wenn ich will, um eine Funktion oder eine Methode deklarieren 109 00:05:54,000 --> 00:05:58,000 , wo ich sage Methode ist wirklich nur eine Funktion, die ein Mitglied einer Klasse ist, 110 00:05:58,000 --> 00:06:01,000 so Art austauschbar, aber nicht wirklich, 111 00:06:01,000 --> 00:06:03,000 so Innenseite meiner Methode, die ich möchte eine neue Methode zu erstellen. 112 00:06:03,000 --> 00:06:06,000 Es wird nichts zurück, so, es wird vom Typ void sein. 113 00:06:06,000 --> 00:06:08,000 Dies ist der Rückgabetyp meiner Funktion. 114 00:06:08,000 --> 00:06:11,000 Jetzt haben wir parens hier, weil-ich weiß nicht. 115 00:06:11,000 --> 00:06:14,000 Weiter wird der Name meiner Funktion sein, 116 00:06:14,000 --> 00:06:17,000 und schließlich haben wir ein Semikolon wie wir in C. 117 00:06:17,000 --> 00:06:19,000 Was ist neu hier ist dieser Kerl hier. 118 00:06:19,000 --> 00:06:22,000 Dieser Bindestrich ist tatsächlich notwendig, und was dies sagt, ist, dass 119 00:06:22,000 --> 00:06:26,000 Diese Methode muss hier auf eine Instanz einer Klasse aufgerufen werden. 120 00:06:26,000 --> 00:06:29,000 >> Nachdem wir unsere Strukturen erklärten wir wahrscheinlich etwas gesagt wie 121 00:06:29,000 --> 00:06:32,000 struct node n, und dass tatsächlich erstellt 122 00:06:32,000 --> 00:06:35,000 oder instanziiert eine dieser Strukturen so, dass ich eigentlich könnte anfangen zu arbeiten 123 00:06:35,000 --> 00:06:38,000 mit dem, was drin ist es, so ist dies Strich bedeutet, dass wir uns zu haben 124 00:06:38,000 --> 00:06:41,000 die Klasse instanziieren genauso wie wir instanziiert, dass struct 125 00:06:41,000 --> 00:06:43,000 bevor wir diese Methode auf es nennen. 126 00:06:43,000 --> 00:06:46,000 Wenn ich möchte damit beginnen, Argumente für meine Methoden 127 00:06:46,000 --> 00:06:48,000 es kommt noch mehr Bananen. 128 00:06:48,000 --> 00:06:50,000 Hier ist meine Methode Namen. 129 00:06:50,000 --> 00:06:53,000 Dann werde ich einen Doppelpunkt und danach Doppelpunkt heißt es hier kommt einige Argumente. 130 00:06:53,000 --> 00:06:56,000 Diese Methode nimmt ein Argument. 131 00:06:56,000 --> 00:06:59,000 Der Typ des Arguments ist ein int, und der Name dieses Argument 132 00:06:59,000 --> 00:07:03,000 oder die Variable, die ich werde anfangen mit im Inneren des Verfahrens i genannt. 133 00:07:03,000 --> 00:07:05,000 Wieder ist dieses Verfahren. Es dauert ein Argument. 134 00:07:05,000 --> 00:07:10,000 >> Wenn Sie damit beginnen, mehr Argumente will wird es mehr Bananen 135 00:07:10,000 --> 00:07:13,000 dass wir dies Doppelpunkt, sagt hier kommt meine Liste von Argumenten. 136 00:07:13,000 --> 00:07:15,000 Das erste Argument ist ein Integer. 137 00:07:15,000 --> 00:07:17,000 Nun ist diese zweite Argument interessant. 138 00:07:17,000 --> 00:07:20,000 Die Variable, dass ich gehe nach innen werden mit meiner Funktion 139 00:07:20,000 --> 00:07:23,000 heißt f, so Innenseite meiner Funktion könnte ich sagen 140 00:07:23,000 --> 00:07:25,000 f + = 1 oder so etwas. 141 00:07:25,000 --> 00:07:30,000 Dieses Ding hier ist im Grunde ein Schlüssel für das Argument oder Parameter. 142 00:07:30,000 --> 00:07:34,000 So wie wir waren Schlüssel-Wert-Paare und so etwas wie JSON oder assoziative Arrays 143 00:07:34,000 --> 00:07:37,000 Objective-C die Entscheidung zu sagen, okay, gerade so, dass es wirklich klar ist, 144 00:07:37,000 --> 00:07:39,000 wenn Sie eine Methode aufrufen, was all diese Parameter sind 145 00:07:39,000 --> 00:07:41,000 Ich bin eigentlich los, um sie alle zu nennen. 146 00:07:41,000 --> 00:07:45,000 Wenn Sie eine Methode aufrufen, werden Sie tatsächlich sagen, andFloat, 147 00:07:45,000 --> 00:07:47,000 und dann passieren Sie es in. 148 00:07:47,000 --> 00:07:50,000 >> Interessanterweise ist diese ein nicht genannt, aber alle anderen Parameter sind, 149 00:07:50,000 --> 00:07:53,000 Wenn wir also einen dritten Argument musste ich könnte sagen, andFloat 150 00:07:53,000 --> 00:07:56,000 und ein weiterer Schwimmer und so weiter. 151 00:07:56,000 --> 00:08:01,000 Als ich diese Methoden aufrufen ist es natürlich Bananen, 152 00:08:01,000 --> 00:08:04,000 so, wenn ich ein Objekt, und ich definiert eine Methode namens foo, 153 00:08:04,000 --> 00:08:09,000 und ich möchte es nennen, anstatt zu sagen foo open / close parens 154 00:08:09,000 --> 00:08:11,000 Ich werde eine Klammer zu öffnen. 155 00:08:11,000 --> 00:08:13,000 Hier ist der Name meiner Methode. 156 00:08:13,000 --> 00:08:17,000 Ich werde die Halterung zu schließen, und das ist das Objekt, das ich nannte es auf mich. 157 00:08:17,000 --> 00:08:20,000 Denken Sie daran, existieren alle diese Methoden in Klassen 158 00:08:20,000 --> 00:08:23,000 da Klassen können Methoden innerhalb von ihnen definiert. 159 00:08:23,000 --> 00:08:26,000 >> Hier habe ich willkürlich ein Objekt von einigen Klasse erstellt, 160 00:08:26,000 --> 00:08:28,000 und dies ist die Syntax für das zu tun. 161 00:08:28,000 --> 00:08:31,000 Es gibt 2 Schritte zum Erstellen eines Objekts. 162 00:08:31,000 --> 00:08:34,000 Der erste Schritt ist zu sagen, ich will Speicherplatz zuzuweisen. 163 00:08:34,000 --> 00:08:37,000 Dies ist das Äquivalent eines malloc. Wir müssen nicht malloc mehr zu sagen. 164 00:08:37,000 --> 00:08:42,000 Wir ließen die m, machte es alloc, und ersetzt die. C mit. M. 165 00:08:42,000 --> 00:08:47,000 Nachdem wir alloc etwas, was wir dann brauchen, um es zu initialisieren. 166 00:08:47,000 --> 00:08:49,000 Grundsätzlich, wenn Sie Objekte erstellen möchten Sie vielleicht eine gewisse Logik haben, 167 00:08:49,000 --> 00:08:53,000 das führt, wenn sie erstellt sind, so können Sie in einigen Standardwerte übergeben 168 00:08:53,000 --> 00:08:57,000 oder so ähnlich, so dass diese Methode init ist, was tatsächlich das Objekt erstellt. 169 00:08:57,000 --> 00:08:59,000 Wir ersten Speicherplatz zuweisen, so wie wir in C hat, 170 00:08:59,000 --> 00:09:04,000 und dann werden wir initialisieren, die kann oder auch nicht eine ganze Menge. 171 00:09:04,000 --> 00:09:07,000 Dann werden wir wieder dieses Ding in einem Objekt o. 172 00:09:07,000 --> 00:09:09,000 Es ist ein Star hier, weil dies technisch ein Zeiger, 173 00:09:09,000 --> 00:09:12,000 aber keine Sorge, Zeiger sind nicht so eine große Sache in Objective-C nicht mehr. 174 00:09:12,000 --> 00:09:15,000 >> Jetzt haben wir diese Klasse namens NSObject instanziiert 175 00:09:15,000 --> 00:09:19,000 und das ist nur eine zufällige class dass Apple. 176 00:09:19,000 --> 00:09:22,000 Wir haben dies instanziiert, und jetzt habe ich eine Instanz dieser Klasse 177 00:09:22,000 --> 00:09:25,000 in diesem Objekt o, so dass bedeutet, dass, wenn ich definiert 178 00:09:25,000 --> 00:09:29,000 diese Methoden konnte ich sie so nennen. 179 00:09:29,000 --> 00:09:31,000 Ebenso, wenn ich eine Methode mit einem Argument nennen wollte, 180 00:09:31,000 --> 00:09:34,000 so ist dies die bar-Methode, das dauert ein Argument, 181 00:09:34,000 --> 00:09:38,000 und hier ist der baz: qux Methode, so geschieht dies 2 Argumente. 182 00:09:38,000 --> 00:09:44,000 Dies ruft eine Funktion auf dieses Objekt o. 183 00:09:44,000 --> 00:09:46,000 Sinn? 184 00:09:46,000 --> 00:09:50,000 Die Syntax sollte Sinn machen, aber Sie Art daran zu gewöhnen. 185 00:09:50,000 --> 00:09:54,000 >> Okay, lasst uns über ein paar Dinge, die in Objective-C gebaut werden sprechen 186 00:09:54,000 --> 00:09:56,000 Das waren nicht unbedingt in C gebaut 187 00:09:56,000 --> 00:09:59,000 In C wir irgendwie musste mit Zeichenfolgen als diese dummen Zeichen-Arrays umgehen, 188 00:09:59,000 --> 00:10:01,000 und es wurde wirklich ärgerlich. 189 00:10:01,000 --> 00:10:04,000 Objective-C hat die alle in für uns gebaut, und es ist eingebaut 190 00:10:04,000 --> 00:10:06,000 Verwendung dieser Klasse genannt NSString. 191 00:10:06,000 --> 00:10:10,000 Wenn ich ein NSString haben wir mehr arkane Syntax erstellen möchten. 192 00:10:10,000 --> 00:10:15,000 Anstatt zu sagen "CS50", sagen wir @ "CS50" 193 00:10:15,000 --> 00:10:17,000 und das ist nur die Syntax für die Deklaration von Strings in Objective-C. 194 00:10:17,000 --> 00:10:21,000 Dies ist äußerst einfach zu vergessen, so nicht. 195 00:10:21,000 --> 00:10:24,000 Jetzt, nachdem ich diese haben, dies ist ein String, aber feststellen, 196 00:10:24,000 --> 00:10:26,000 es ist wirklich nur ein Objekt. 197 00:10:26,000 --> 00:10:30,000 Ich sagte NSString, was bedeutet, ich instanziiert die Klasse 198 00:10:30,000 --> 00:10:32,000 als NSString, die jemand anders für mich geschrieben, 199 00:10:32,000 --> 00:10:35,000 und sie waren sehr nett, und so jetzt 200 00:10:35,000 --> 00:10:37,000 Ich anfangen kann das Aufrufen von Methoden auf sie. 201 00:10:37,000 --> 00:10:40,000 Wenn ich die Methode ausführlich über dieses Objekt s 202 00:10:40,000 --> 00:10:43,000 es wird zu mir zurückkehren die Länge des Strings. 203 00:10:43,000 --> 00:10:45,000 Das ist wie strlen in C. 204 00:10:45,000 --> 00:10:47,000 Dies würde wieder 4. 205 00:10:47,000 --> 00:10:51,000 >> Ebenso ist eine weitere Methode, die ich will zu kümmern könnte dies characterAtIndex. 206 00:10:51,000 --> 00:10:54,000 Dies ist eine Methode, die auf dieser string s, sagt 207 00:10:54,000 --> 00:10:57,000 Ich möchte, dass die 0. Charakter zu bekommen, 208 00:10:57,000 --> 00:10:59,000 und so wäre dies für mich das Zeichen c zurück, 209 00:10:59,000 --> 00:11:02,000 und es gibt eine ganze Reihe mehr von diesen Methoden, die Sie wirklich leicht googeln. 210 00:11:02,000 --> 00:11:07,000 Apples Dokumentation ist groß, und wir werden einen Blick auf, dass ein bisschen dauern. 211 00:11:07,000 --> 00:11:09,000 Those Are Strings. 212 00:11:09,000 --> 00:11:11,000 Wir haben auch variabler Größe Arrays gebaut in. 213 00:11:11,000 --> 00:11:13,000 Angemeldet in C, wenn wir ein Array deklariert 214 00:11:13,000 --> 00:11:16,000 mussten wir sagen, Sie haben 5 Elemente, Ende der Geschichte. 215 00:11:16,000 --> 00:11:18,000 Wenn wir Sie JavaScript und PHP haben wir beginnen konnten 216 00:11:18,000 --> 00:11:20,000 Dinge zu tun, wie das Hinzufügen oder sich bewegenden Elementen. 217 00:11:20,000 --> 00:11:22,000 Wir können das gleiche in Objective-C zu tun. 218 00:11:22,000 --> 00:11:26,000 Anstatt ein Array in der normalen C Weg 219 00:11:26,000 --> 00:11:30,000 haben wir wieder eine andere Klasse namens NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Es gibt auch NSArray, 221 00:11:33,000 --> 00:11:35,000 und das wird im Grunde kapseln einige Array. 222 00:11:35,000 --> 00:11:38,000 Das sagt das erste, was ich tun möchte, ist, möchte ich zu vergeben 223 00:11:38,000 --> 00:11:41,000 Platz für ein neues Array, und nachdem ich ordnen Sie 224 00:11:41,000 --> 00:11:43,000 Ich habe dann müssen sie zu initialisieren. 225 00:11:43,000 --> 00:11:45,000 Wieder nur den Aufruf dieser 2 Methoden. 226 00:11:45,000 --> 00:11:48,000 Nun bedeutet dies, dass innerhalb dieses Objekt eine 227 00:11:48,000 --> 00:11:50,000 Ich habe ein leeres Array sitzen. 228 00:11:50,000 --> 00:11:54,000 Wenn ich etwas zu diesem Array hinzufügen möchten, kann ich die addObject Methode. 229 00:11:54,000 --> 00:11:59,000 Ich möchte ein Objekt in dem Array eine hinzuzufügen, und ich möchte die Zeichenfolge CS50 hinzuzufügen. 230 00:11:59,000 --> 00:12:02,000 Wenn ich umgekehrt zu entfernen, dass ich sagen kann, wollte ich will 231 00:12:02,000 --> 00:12:09,000 entfernen Sie das Objekt an die erste Stelle auf dem Array oder Objekt ein. 232 00:12:09,000 --> 00:12:11,000 >> Sinn? 233 00:12:11,000 --> 00:12:14,000 Okay, Sie Art dieser eckigen Klammer etwas gewöhnen. 234 00:12:14,000 --> 00:12:18,000 By the way, innerhalb einer Menge von Apples Bibliotheken, die Sie sehen diese NS. 235 00:12:18,000 --> 00:12:21,000 Die NS steht tatsächlich für den nächsten Schritt, die man von Steve Jobs erste Unternehmen war, 236 00:12:21,000 --> 00:12:24,000 und das ist, wo er begann wirklich schriftlich eine Menge des Codes 237 00:12:24,000 --> 00:12:27,000 als eine Art Basis für Mac OS X und all die anderen Sachen, 238 00:12:27,000 --> 00:12:32,000 und so diese NS ist eine Art von diesem schönen Legacy zurufen einer der früheren Unternehmen 239 00:12:32,000 --> 00:12:34,000 zurück, wenn Apple wurde erstmals Anfang. 240 00:12:34,000 --> 00:12:36,000 Es ist überall. 241 00:12:36,000 --> 00:12:41,000 Werfen wir einen Blick auf eine ganzheitliche Objective-C Beispiel. 242 00:12:41,000 --> 00:12:44,000 Hier bin ich innerhalb XCode. 243 00:12:44,000 --> 00:12:47,000 Um dorthin zu gelangen, habe ich zunächst heruntergeladen XCode aus dem App Store, 244 00:12:47,000 --> 00:12:50,000 öffnete es, und dann ging ich hier, um die Datei, 245 00:12:50,000 --> 00:12:54,000 hier neue, und dann Projekt. 246 00:12:54,000 --> 00:12:57,000 Nach tun, dass ich all diese Möglichkeiten, was ich will zu schaffen haben, 247 00:12:57,000 --> 00:12:59,000 und so werden wir einen Blick auf diese Optionen später erfolgen, 248 00:12:59,000 --> 00:13:03,000 aber nur für dieses Beispiel, weil wir eigentlich nicht gehen, um eine App noch nicht haben, 249 00:13:03,000 --> 00:13:06,000 Ich kam hierher, und ich sagte Command Line Tool, 250 00:13:06,000 --> 00:13:09,000 und dies ist ein app, dass ich in der Befehlszeile ausführen 251 00:13:09,000 --> 00:13:12,000 wie wir von C. läuft 252 00:13:12,000 --> 00:13:16,000 Das ist, wie ich dieses Projekt erstellt, und jetzt bin ich hier, 253 00:13:16,000 --> 00:13:20,000 so lassen Sie uns zuerst einen Blick in diese Datei, und dies sollte hübsch aussehen vertraut. 254 00:13:20,000 --> 00:13:24,000 Ich habe einen int Namen. Es ist mein Freund argc, meine anderen Kumpel argv. 255 00:13:24,000 --> 00:13:30,000 Und so können wir sehen, dass dies der Ausgangspunkt für meine erste Objective-C-Anwendung ist. 256 00:13:30,000 --> 00:13:32,000 Hier können wir dies jetzt zu ignorieren. 257 00:13:32,000 --> 00:13:35,000 Dies ist im Grunde einige Speicher-Management Zeug, das wirst du nicht wirklich 258 00:13:35,000 --> 00:13:37,000 jemals zu befürchten. 259 00:13:37,000 --> 00:13:39,000 >> Lassen Sie uns an diesem ersten Block hier. 260 00:13:39,000 --> 00:13:46,000 Diese erste Zeile, wenn ich sage, Student * alice = [[Studenten alloc] init] was ist das denn? 261 00:13:46,000 --> 00:13:50,000 Diese erste Student hier, ist dies wahrscheinlich eine Klasse. 262 00:13:50,000 --> 00:13:54,000 Dies ist nicht eine Klasse, dass Apple schrieb, aber es ist eine Klasse, die ich geschrieben habe. 263 00:13:54,000 --> 00:13:57,000 Das erste, was ich tun möchte, ist, ich will um Platz für einen neuen Schüler zuweisen, 264 00:13:57,000 --> 00:14:00,000 und dann habe ich es initialisieren möchten, so gibt mir zurück 265 00:14:00,000 --> 00:14:05,000 Diese neue Student-Objekt, und ich bin die Speicherung dieser in einer Variable namens Alice. 266 00:14:05,000 --> 00:14:07,000 Wo haben die Klasse kommen? 267 00:14:07,000 --> 00:14:12,000 Nun, hier auf der linken Seite sind alle von den verschiedenen Dateien innerhalb meines Projektes. 268 00:14:12,000 --> 00:14:16,000 Wir können hier sehen, ich habe eine Student.h und Student.m. 269 00:14:16,000 --> 00:14:20,000 Das. H-Datei, erinnere, ist, wo ich all die Dinge zu erklären 270 00:14:20,000 --> 00:14:22,000 das wird innerhalb der Klasse existieren. 271 00:14:22,000 --> 00:14:25,000 >> Werfen wir einen Blick auf, dass. 272 00:14:25,000 --> 00:14:29,000 Alles klar, hier haben wir dieses @ interface, und diese sagt, dass hier kommt 273 00:14:29,000 --> 00:14:33,000 die Erklärungen der alles, was in meiner Klasse existieren wird. 274 00:14:33,000 --> 00:14:36,000 Dann habe ich einen Doppelpunkt. Dann habe ich dieses NSObject Sache. 275 00:14:36,000 --> 00:14:40,000 Diese Doppelpunkt bedeutet, dass Vererbung Bit diskutieren wir ein bisschen früher wurden. 276 00:14:40,000 --> 00:14:43,000 Das sagt alles, was ein NSObject tun können 277 00:14:43,000 --> 00:14:46,000 wo NSObject ist diese Klasse von jemand anderem geschrieben, 278 00:14:46,000 --> 00:14:50,000 alles, was diese NSObject tun können, möchte ich in der Lage sein, das zu tun. 279 00:14:50,000 --> 00:14:54,000 Mit den Worten: NSObject das bedeutet, dass ich im Grunde 280 00:14:54,000 --> 00:14:58,000 vererbte gesamte Funktionalität einer anderen Klasse. 281 00:14:58,000 --> 00:15:02,000 Das gab mir eine ganze Reihe von verschiedenen Methoden und Eigenschaften, die ich benutzen kann. 282 00:15:02,000 --> 00:15:05,000 Hier unten Ich erstelle 2 Eigenschaften. 283 00:15:05,000 --> 00:15:08,000 Das heißt, mein Schüler, wenn dies ein struct, wären dies die 2 Dinge 284 00:15:08,000 --> 00:15:11,000 Innenseite meiner struct, so jeder Schüler hat einen Namen 285 00:15:11,000 --> 00:15:14,000 das ist ein String, und ein Schüler hat auch eine Klasse, 286 00:15:14,000 --> 00:15:17,000 das ist ein int. 287 00:15:17,000 --> 00:15:23,000 >> Schließlich, hier unten Ich werde ein Verfahren zur meiner Studienzeit zu schaffen. 288 00:15:23,000 --> 00:15:26,000 Ich rief meine Methode, initWithName, und es dauert ein Argument, 289 00:15:26,000 --> 00:15:31,000 und dieses Argument ist ein String, und ich nannte es nennen. 290 00:15:31,000 --> 00:15:35,000 Lassen Sie uns nun an, wie wir tatsächlich diese Klasse implementiert aussehen. 291 00:15:35,000 --> 00:15:38,000 Hier, jetzt bin ich innerhalb meiner. M-Datei, 292 00:15:38,000 --> 00:15:40,000 m für die Umsetzung, schätze ich. 293 00:15:40,000 --> 00:15:44,000 Ich habe meine Implementierung, mein Ende, und hier ist, wo ich eigentlich bin definieren 294 00:15:44,000 --> 00:15:47,000 Welche initWithName tut. 295 00:15:47,000 --> 00:15:50,000 Ich habe initWithName, den Namen meines Parameter und dann dieses 296 00:15:50,000 --> 00:15:53,000 ist, wo ich tatsächlich die Schaffung bin ein Student, 297 00:15:53,000 --> 00:15:56,000 und so ist dies ein wenig kryptisch, aber das ist eine Art der Textvorschlag 298 00:15:56,000 --> 00:15:58,000 dass Sie in Ihrem Konstruktoren aufnehmen möchten. 299 00:15:58,000 --> 00:16:02,000 Diese Funktion zur Initialisierung hier initWithName, ist eine Art von Konstruktor. 300 00:16:02,000 --> 00:16:05,000 Sie sind im Grunde Bau eines neuen Student-Objekt 301 00:16:05,000 --> 00:16:07,000 und vielleicht schicken ein paar Daten darin. 302 00:16:07,000 --> 00:16:11,000 Das erste, was ich tun möchte, ist, dass ich anrufen möchten init auf dieser super Sache. 303 00:16:11,000 --> 00:16:15,000 >> Beachten Sie, dass, wenn ich sagte wieder hier in der. H-Datei 304 00:16:15,000 --> 00:16:21,000 dass alles ein NSObject hat ein Student hat auch. 305 00:16:21,000 --> 00:16:24,000 Das heißt, wenn ich einen Schüler, was ich auch tun müssen, ist zu schaffen 306 00:16:24,000 --> 00:16:28,000 stellen Sie sicher, dass die NSObject dass ich erben all diese Daten aus 307 00:16:28,000 --> 00:16:32,000 ist auch richtig initialisiert. 308 00:16:32,000 --> 00:16:36,000 Was muss ich sagen, ist diese super ist eigentlich los, um zum übergeordneten Klasse verweisen 309 00:16:36,000 --> 00:16:39,000 dass ich erben, so möchte ich sichergehen, dass ich zu initialisieren 310 00:16:39,000 --> 00:16:43,000 alles, was ich bin auf je bevor ich versuchen, es zu benutzen starten. 311 00:16:43,000 --> 00:16:46,000 Dann, wenn diese korrekt initialisiert ist dies wie gesagt, wenn malloc 312 00:16:46,000 --> 00:16:50,000 nicht null zurück, dann kann ich mit dem Einstellen einiger Eigenschaften. 313 00:16:50,000 --> 00:16:54,000 >> In JavaScript und PHP hatten wir dieses Schlüsselwort heißt dies 314 00:16:54,000 --> 00:16:58,000 und dies auf die aktuelle Instanz einer Klasse bezeichnet. 315 00:16:58,000 --> 00:17:00,000 In Objective-C nennen wir dieses Selbstverständnis. 316 00:17:00,000 --> 00:17:04,000 Wenn ich self.name sagen, bedeutet dies, dass das Objekt 317 00:17:04,000 --> 00:17:07,000 Ich habe gerade als ich sagte, Studenten alloc init 318 00:17:07,000 --> 00:17:09,000 das wird mir zu geben wieder ein Objekt. 319 00:17:09,000 --> 00:17:12,000 Das heißt, ich will den Namen des Objekts eingestellt 320 00:17:12,000 --> 00:17:15,000 zu dem, was ich gerade passiert in. 321 00:17:15,000 --> 00:17:18,000 Just in C mögen, greifen wir Mitglieder mit diesem Punkt, 322 00:17:18,000 --> 00:17:21,000 so self.name sagt der Name des Student-Objekt 323 00:17:21,000 --> 00:17:24,000 wird jetzt sein, was Sie gerade passiert in. 324 00:17:24,000 --> 00:17:28,000 Und so schließlich kann ich ihn zurückgeben, so bekomme ich tatsächlich etwas zurück. 325 00:17:28,000 --> 00:17:30,000 >> Haben Sie Fragen? 326 00:17:30,000 --> 00:17:34,000 Okay, so dass diese sich selbst = super init 327 00:17:34,000 --> 00:17:37,000 Wenn Sie nicht ganz verstehen, das Erbe Sachen mach dir keine Sorgen. 328 00:17:37,000 --> 00:17:40,000 Genau wissen, dass, wenn Sie jemals wollen Ihr eigenes init-Methode machen nur 329 00:17:40,000 --> 00:17:42,000 tun, und Sie werden gut zu gehen. 330 00:17:42,000 --> 00:17:44,000 Yeah. >> [Student] Was bedeutet, wenn selbst bedeuten? 331 00:17:44,000 --> 00:17:49,000 Das bedeutet, wenn wir malloc etwas, das wir geprüft werden, ob sie gleich null war, 332 00:17:49,000 --> 00:17:51,000 und wenn es null war, dann sind wir verlassen. 333 00:17:51,000 --> 00:17:55,000 Dies ist die gleiche Sache, denn wenn diese null zurück, dann werden wir wahrscheinlich gehst zu seg Fehler 334 00:17:55,000 --> 00:17:57,000 wenn wir versuchen, sie zu manipulieren beginnen. 335 00:17:57,000 --> 00:18:01,000 Das ist unsere Studenten-Klasse. 336 00:18:01,000 --> 00:18:03,000 Das heißt, wir können unsere Schüler in eine von zwei Arten zu initialisieren. 337 00:18:03,000 --> 00:18:08,000 Wenn ich sage, Studenten alloc init Ich bin nicht mit, dass die Methode, die ich gerade geschrieben habe, 338 00:18:08,000 --> 00:18:11,000 und stattdessen kann ich einfach sagen alice.name, 339 00:18:11,000 --> 00:18:14,000 und jetzt werde ich diese Eigenschaft Namen gesetzt. 340 00:18:14,000 --> 00:18:17,000 >> Ebenso, wenn ich will, dass initWithName Methode verwenden 341 00:18:17,000 --> 00:18:20,000 Ich kann nur sagen alloc und dann anstatt zu sagen init 342 00:18:20,000 --> 00:18:24,000 Ich werde diese Methode, die ich gerade erstellt anrufen, und ich werde in Bob passieren. 343 00:18:24,000 --> 00:18:30,000 An diesem Punkt hat dieses Objekt Bob einen Namen gleich Bob. 344 00:18:30,000 --> 00:18:35,000 Okay, hier unten bin ich mit diesem NSMutableArray, dass wir in früheren aussah. 345 00:18:35,000 --> 00:18:38,000 Ich Zuteilung space.Then ich Initialisierung ein neues Array. 346 00:18:38,000 --> 00:18:40,000 Ich werde zwei Dinge, um es hinzuzufügen. 347 00:18:40,000 --> 00:18:43,000 Dieses Array hält nun Studenten Objekte. 348 00:18:43,000 --> 00:18:46,000 Beachten Sie, dass nirgendwo habe ich zu sagen, das ist ein Array von Studenten haben. 349 00:18:46,000 --> 00:18:48,000 Ich sagte, es ist ein Array, period. 350 00:18:48,000 --> 00:18:50,000 Dann kann ich setzen, was nach innen von ihm, was ich will. 351 00:18:50,000 --> 00:18:52,000 Hier habe ich 2 Objekte. 352 00:18:52,000 --> 00:18:56,000 >> Schließlich habe ich ein anderes Objekt hier, diese TF. 353 00:18:56,000 --> 00:18:59,000 Hier in TF.h im Grunde das Gleiche. 354 00:18:59,000 --> 00:19:01,000 Ich komme aus NSObject, und durch die Art und Weise erbt, 355 00:19:01,000 --> 00:19:03,000 wenn Sie Klassen erstellen ist das alles für dich getan, 356 00:19:03,000 --> 00:19:06,000 diese Art von Schnittstelle Textvorschlag. 357 00:19:06,000 --> 00:19:08,000 Es verfügt über eine Eigenschaft der Studierenden. 358 00:19:08,000 --> 00:19:15,000 Ich habe ein paar Methoden hier, die nicht wirklich zu tun eine ganze Menge, 359 00:19:15,000 --> 00:19:18,000 und so das heißt nachdem ich dieses TF-Objekt erstellen 360 00:19:18,000 --> 00:19:23,000 Ich kann diese Methode grade auf das so nennen. 361 00:19:23,000 --> 00:19:26,000 Haben Sie Fragen zu Objective-C-Syntax, bevor wir Bewegung in etwas mehr starten 362 00:19:26,000 --> 00:19:30,000 interessante Anwendungen Entwicklung stuff? 363 00:19:30,000 --> 00:19:34,000 >> Okay, also lasst uns tatsächlich eine iPhone App. 364 00:19:34,000 --> 00:19:39,000 Die Kern-Klassen, die Sie im Inneren verwenden werden von Ihrem iPhone App genannt View-Controller, 365 00:19:39,000 --> 00:19:42,000 und eine View-Controller stellt grundsätzlich einen einzigen Bildschirm 366 00:19:42,000 --> 00:19:46,000 innerhalb Ihrer Anwendung, so wenn ich auf die Musik app, zum Beispiel, 367 00:19:46,000 --> 00:19:50,000 ein View-Controller darstellen könnte, in welcher Ansicht ich alle Songs auf meinem iPhone. 368 00:19:50,000 --> 00:19:53,000 Eine andere Ansicht-Controller sein könnte, wenn ich einen Song klicken und starten Sie die Wiedergabe 369 00:19:53,000 --> 00:19:55,000 oder wie ich bin Drilldown in Künstler. 370 00:19:55,000 --> 00:19:59,000 Jede dieser verschiedenen Bildschirmen könnte als eine andere Ansicht-Controller dargestellt werden, 371 00:19:59,000 --> 00:20:04,000 und eine View-Controller ist wirklich nur eine Klasse, wie dieser Bildschirm funktioniert, sagt. 372 00:20:04,000 --> 00:20:07,000 Dinge innerhalb eines View-Controller, werden wir Eigenschaften haben, 373 00:20:07,000 --> 00:20:10,000 so Dinge wie eine Schaltfläche wird eine Eigenschaft unserer Sicht Controller sein. 374 00:20:10,000 --> 00:20:13,000 >> Wir werden auch die Methoden haben, und diese sind im Grunde Event-Handler. 375 00:20:13,000 --> 00:20:16,000 Diese Methode sagt, wenn Sie diese Taste drücken 376 00:20:16,000 --> 00:20:19,000 Ich möchte etwas tun, und schließlich wieder 377 00:20:19,000 --> 00:20:24,000 werden wir verwenden dieses Selbstverständnis Schlüsselwort, um die aktuelle Instanz zugreifen. 378 00:20:24,000 --> 00:20:29,000 Schnittstellen in iOS zu bauen ist eigentlich wirklich, wirklich einfach. 379 00:20:29,000 --> 00:20:32,000 Sie haben dieses schöne Drag-and-Drop-Schnittstelle als Interface Builder, 380 00:20:32,000 --> 00:20:37,000 und die 2-Kern-Konzepte, die Anschlussmöglichkeiten für Ihre Objective-C Interface Builder 381 00:20:37,000 --> 00:20:40,000 sind IBOutlet und IBAction. 382 00:20:40,000 --> 00:20:44,000 Ein IBOutlet sagt einfach, dass, wenn Sie eine Immobilie, die eine Taste ist zu erklären, 383 00:20:44,000 --> 00:20:47,000 und Sie möchten es Haken bis zu etwas in Ihrer aktuellen UI, 384 00:20:47,000 --> 00:20:49,000 Sie gehen zu sagen, es ist ein Auslass. 385 00:20:49,000 --> 00:20:51,000 Ebenso, wenn Sie einen Event-Handler stellen 386 00:20:51,000 --> 00:20:54,000 dann wirst du sagen, es ist eine Aktion. 387 00:20:54,000 --> 00:20:57,000 >> Um tatsächlich verkabeln diese grafische Darstellung 388 00:20:57,000 --> 00:21:00,000 und der Code ist es wirklich, wirklich einfach. 389 00:21:00,000 --> 00:21:03,000 Wenn Sie eine IBOutlet anhängen möchten, ist alles was Sie tun müssen, steuern Sie auf, 390 00:21:03,000 --> 00:21:05,000 und wir werden sehen ein Beispiel für diese wirklich schnell. 391 00:21:05,000 --> 00:21:07,000 Sie steuern auf, wo es heißt View Controller. 392 00:21:07,000 --> 00:21:09,000 Du wirst in die Schnittstelle ziehen, oder umgekehrt, 393 00:21:09,000 --> 00:21:13,000 wenn Sie hook up einen Event-Handler möchten Sie gehen aus der Schnittstelle ziehen 394 00:21:13,000 --> 00:21:15,000 in der anderen Richtung. 395 00:21:15,000 --> 00:21:20,000 Werfen wir einen Blick auf eine wirklich einfache iOS Beispiel. 396 00:21:20,000 --> 00:21:23,000 >> Lasst uns ein neues Projekt erstellen. 397 00:21:23,000 --> 00:21:25,000 Ich werde kommen hier Anwendung, 398 00:21:25,000 --> 00:21:28,000 und ich werde Single View Anwendung klicken. 399 00:21:28,000 --> 00:21:31,000 Ich werde Sie auf Weiter. Ich gebe mein Projekt einen Namen. 400 00:21:31,000 --> 00:21:33,000 Ich nenne es Hallo. 401 00:21:33,000 --> 00:21:36,000 Interessanterweise übernimmt Apples Sie ein Produkt zu schaffen 402 00:21:36,000 --> 00:21:38,000 so dass Sie es verkaufen, und sie können Geld zu verdienen. 403 00:21:38,000 --> 00:21:41,000 Hier unten werde ich sagen, dass dies eine iPhone-App ist. 404 00:21:41,000 --> 00:21:44,000 Sie können eine iPad-App, oder wenn Sie wollen eine jener Apps erstellen 405 00:21:44,000 --> 00:21:47,000 das unterstützt sowohl Geräte, die Sie tun können zu. 406 00:21:47,000 --> 00:21:49,000 Diese sind, was Sie Häkchen aussehen soll. 407 00:21:49,000 --> 00:21:51,000 >> Sie wollen Storyboards, die wir später sehen werden verwenden, 408 00:21:51,000 --> 00:21:54,000 und Sie wollen auf jeden Fall die automatische Referenz-Zählung verwenden, 409 00:21:54,000 --> 00:21:58,000 das ist ein nettes Feature verhindert, dass Sie mit zu sagen malloc und free. 410 00:21:58,000 --> 00:22:03,000 Sofern Sie anrufen malloc und free wollen, würde ich lassen Sie diese überprüfen. 411 00:22:03,000 --> 00:22:07,000 Ich werde auf Weiter klicken, und schließlich, das wird mich fragen, wo ich es speichern möchten. 412 00:22:07,000 --> 00:22:14,000 Ich werde geschlagen zu erstellen, und hier gehen wir. 413 00:22:14,000 --> 00:22:16,000 Ich habe ein neues Projekt. 414 00:22:16,000 --> 00:22:19,000 Hier drüben auf der linken Seite befinden sich alle Dateien, die Innenseite meines Projekts sind, 415 00:22:19,000 --> 00:22:22,000 und merke, dass ich eine ganze Reihe bekommen, und ich habe nicht einmal etwas tun. 416 00:22:22,000 --> 00:22:24,000 IOS ist groß. 417 00:22:24,000 --> 00:22:27,000 >> Zum Beispiel, hier diese ViewController.h, 418 00:22:27,000 --> 00:22:30,000 dies wird meine erste View-Controller repräsentieren, 419 00:22:30,000 --> 00:22:32,000 so der erste Bildschirm Innenseite meiner App. 420 00:22:32,000 --> 00:22:34,000 Jetzt wissen wir, was dieser sagt. 421 00:22:34,000 --> 00:22:36,000 Wir sagen Ich rufe diese Klasse ViewController, 422 00:22:36,000 --> 00:22:40,000 und ein ViewController tut alles, dass ein UIViewController tut, 423 00:22:40,000 --> 00:22:43,000 und dies wiederum ist Teil der Klasse, dass Apple schrieb, dass macht eine Menge von praktischen Dinge für uns 424 00:22:43,000 --> 00:22:46,000 gerne den Bildschirm. 425 00:22:46,000 --> 00:22:50,000 Hier ist, wo ich eigentlich beginnen können definieren, was meiner Ansicht-Controller tut, 426 00:22:50,000 --> 00:22:52,000 und es stellt sich heraus, dass ich wirklich nicht brauchen nichts von alledem. 427 00:22:52,000 --> 00:22:55,000 Dies ist Codebausteine, dass Apple gibt mir kostenlos. 428 00:22:55,000 --> 00:22:59,000 Ich brauchte diese erste Zeile, oder ich habe nicht eine Klasse, 429 00:22:59,000 --> 00:23:02,000 so können wir loswerden, dass und loszuwerden diese. 430 00:23:02,000 --> 00:23:05,000 Okay, so ist dies meiner leeren Bildschirm an. 431 00:23:05,000 --> 00:23:08,000 >> Nun wollen wir auf dieser MainStoryboard.storyboard klicken, 432 00:23:08,000 --> 00:23:11,000 und das ist, wo es interessant zu werden beginnt. 433 00:23:11,000 --> 00:23:14,000 Dies ist der erste Bildschirm auf meinem App. 434 00:23:14,000 --> 00:23:17,000 Wenn ich eine Schaltfläche hinzufügen möchten, in HTML Ich hatte einen Knopf tag erstellen. 435 00:23:17,000 --> 00:23:20,000 In Android, müssen Sie eine Schaltfläche Tag zu erstellen, 436 00:23:20,000 --> 00:23:23,000 aber in iOS, wenn ich nur hier runter kommen nach rechts unten 437 00:23:23,000 --> 00:23:27,000 und wenn ich hier auf dieser dritte einem Klick, wo es heißt Objekte, 438 00:23:27,000 --> 00:23:31,000 und ich kann nach unten scrollen, oder ich können nach den Knopf. 439 00:23:31,000 --> 00:23:35,000 Und siehe da, eine Schaltfläche, wenn ich also ziehen Sie eigentlich Drop dieses Recht gibt, 440 00:23:35,000 --> 00:23:38,000 Ich habe gerade eine Taste, um diesen Bildschirm auf meiner App. 441 00:23:38,000 --> 00:23:41,000 Wenn ich den Text ändern wollen, kann ich doppelklicken Sie darauf, 442 00:23:41,000 --> 00:23:47,000 etwas sagen verlockend wie "Drücken Sie mir." 443 00:23:47,000 --> 00:23:51,000 Okay, jetzt, wenn ich dieses Programm ausführen, so dass wir es kompilieren, 444 00:23:51,000 --> 00:23:54,000 so, es laufe ich auf die Play-Taste in der oberen linken, und es ist meine App. 445 00:23:54,000 --> 00:23:58,000 Ich habe nichts, und ich bekam ein süßes suchen iPhone App. 446 00:23:58,000 --> 00:24:01,000 Wenn ich es stoppen möchten, können Sie auf die Stopp-Taste 447 00:24:01,000 --> 00:24:03,000 weil es mehr Spaß. 448 00:24:03,000 --> 00:24:07,000 >> Lassen Sie uns sagen, dass ich wirklich wollen, dass etwas passiert, wenn ich diesen Knopf drücken. 449 00:24:07,000 --> 00:24:09,000 Um das zu tun, was ich tun müssen, ist, ich brauche zu erstellen 450 00:24:09,000 --> 00:24:13,000 eine neue Event-Handler oder eine Aktion. 451 00:24:13,000 --> 00:24:16,000 Das bedeutet, dass ich eine Methode, die ich angerufen werden möchten erstellen müssen 452 00:24:16,000 --> 00:24:18,000 wenn ich die Taste drücken, so erstellen wir eine neue Methode. 453 00:24:18,000 --> 00:24:20,000 Ich bin in der ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Ich muss sagen, dass ein Verfahren existiert. 455 00:24:22,000 --> 00:24:26,000 Ich brauche einen Bindestrich erster weil ich zu rufen diese auf dem View-Controller bin. 456 00:24:26,000 --> 00:24:28,000 Ich brauche zu geben diesem einen Typ. 457 00:24:28,000 --> 00:24:31,000 Der Typ dieser wird, dass IBAction, was wir sahen früher. 458 00:24:31,000 --> 00:24:35,000 Dies ist ein Event-Handler, also wird es eine IBAction zurückkehren, 459 00:24:35,000 --> 00:24:38,000 und dies ist ein Hinweis auf XCode zu sagen, dass 460 00:24:38,000 --> 00:24:40,000 Das ist etwas, was ich will, um etwas zu verdrahten. 461 00:24:40,000 --> 00:24:45,000 Ich kann ihm einen Namen geben, wie buttonPressed, Semikolon. 462 00:24:45,000 --> 00:24:48,000 >> Jetzt habe ich eine neue Methode in meiner Klasse deklariert. 463 00:24:48,000 --> 00:24:50,000 Ich habe gesagt, diese Methode hat zu existieren. 464 00:24:50,000 --> 00:24:53,000 Nun wollen wir in ViewController.m kommen, 465 00:24:53,000 --> 00:24:56,000 und lassen Sie uns sagen, was diese Methode zu tun. 466 00:24:56,000 --> 00:25:03,000 Wenn ich mit der Eingabe beginnen, zum Beispiel (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 Ankündigung XCode ist wirklich nett und autocompletes für mich. 468 00:25:06,000 --> 00:25:09,000 Das ist wirklich wunderbar. 469 00:25:09,000 --> 00:25:12,000 Beachten Sie hier, dass im Inneren des. M-Datei kann ich auch sagen nichtig, 470 00:25:12,000 --> 00:25:15,000 und das liegt daran, dass IBAction ist nicht wirklich ein Typ. 471 00:25:15,000 --> 00:25:19,000 Es ist eigentlich Hashtag irgendwo eine Lücke definiert werden, 472 00:25:19,000 --> 00:25:22,000 und wieder, dies ist nur ein Hinweis auf XCode, der sagt 473 00:25:22,000 --> 00:25:25,000 Ich möchte dies ein Event-Handler, und wir werden sehen, warum in nur einer Sekunde. 474 00:25:25,000 --> 00:25:28,000 Wenn diese Taste gedrückt wird, werde ich etwas ärgerlich zu tun 475 00:25:28,000 --> 00:25:30,000 gerne öffnet ein Popup. 476 00:25:30,000 --> 00:25:35,000 >> Um dies zu tun, dass ich eine neue Instanz dieser Klasse aufgerufen UIAlertView erstellen, 477 00:25:35,000 --> 00:25:39,000 und dies ist eine Klasse, dass Apple schrieb, dass geht um lästige Popups angezeigt. 478 00:25:39,000 --> 00:25:43,000 Wir nennen diese Popup-Benachrichtigung, und ich habe 2 Stufen, denken Sie daran, die Schaffung dieses Objekt. 479 00:25:43,000 --> 00:25:46,000 Das erste, was ich tun müssen, ist Speicherplatz zuweisen. 480 00:25:46,000 --> 00:25:48,000 Ich möchte eine UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Ich möchte Speicherplatz zuzuweisen. Das ist meine erste Methode. 482 00:25:51,000 --> 00:25:53,000 Meine nächste Methode ist, möchte ich es zu initialisieren, 483 00:25:53,000 --> 00:25:58,000 und so habe ich dieses große, lange Methode namens initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Das ist im Grunde geht zu kontrollieren, was dieses Popup sagt. 485 00:26:01,000 --> 00:26:04,000 Der Titel meines Popup kann hallo. 486 00:26:04,000 --> 00:26:08,000 Die Botschaft dieses Pop-up kann "Dies ist iOS." 487 00:26:08,000 --> 00:26:10,000 Delegierter Sache, ich weiß nicht, was das ist. 488 00:26:10,000 --> 00:26:13,000 Sagen wir, es ist nichts. 489 00:26:13,000 --> 00:26:18,000 Nun ist die Taste, die zu erscheinen hat kann etwas sagen wie "Es ist sicher," 490 00:26:18,000 --> 00:26:24,000 und ich weiß nicht wirklich wollen keine anderen Tasten, also lasst löschen, und schließen Sie die Halterung. 491 00:26:24,000 --> 00:26:27,000 >> Okay, habe ich einen extra ein. Dort gehen wir. 492 00:26:27,000 --> 00:26:30,000 Dies ist, wie kann ich ein neues Pop-up zu schaffen. 493 00:26:30,000 --> 00:26:35,000 Wenn ich tatsächlich zeigen das Popup will ich will die Show-Methode aufrufen. 494 00:26:35,000 --> 00:26:38,000 Um dies zu tun, dass ich wach und Show sagen, 495 00:26:38,000 --> 00:26:40,000 und wieder war autocomplete super nett. 496 00:26:40,000 --> 00:26:42,000 Wenn ich vergessen, was das war, wenn ich in s gerade eingegeben, 497 00:26:42,000 --> 00:26:45,000 Ich kann blättern Sie hier, um herauszufinden, was es war, 498 00:26:45,000 --> 00:26:48,000 und es filtert schön. 499 00:26:48,000 --> 00:26:52,000 Jetzt habe ich diese neue popup. 500 00:26:52,000 --> 00:26:55,000 Wir kommen wieder, was bedeutet, Delegierter später 501 00:26:55,000 --> 00:26:58,000 und jetzt will ich sagen, ich möchte diese Methode, die entlassen werden 502 00:26:58,000 --> 00:27:01,000 wenn ich die Taste drücken, so werde ich zurück zu meiner Storyboard, 503 00:27:01,000 --> 00:27:04,000 und ich will jetzt fügen Sie diesen IBAction. 504 00:27:04,000 --> 00:27:06,000 Das erste, was Sie tun möchten, ist, klicken Sie auf die Schaltfläche. 505 00:27:06,000 --> 00:27:08,000 Wenn ich diesen Knopf drücke ich will, dass etwas passiert. 506 00:27:08,000 --> 00:27:10,000 Ich werde nicht zu halten Kontrolle. 507 00:27:10,000 --> 00:27:13,000 Ich werde durch Klicken und Ziehen von der Taste 508 00:27:13,000 --> 00:27:15,000 über hier, wo es heißt View Controller. 509 00:27:15,000 --> 00:27:17,000 Wir können sehen, dass es schön leuchtet. 510 00:27:17,000 --> 00:27:22,000 >> Wenn ließ ich mit meiner Maus habe ich nun dieses Pop-up hier, wo ich einige Optionen haben. 511 00:27:22,000 --> 00:27:24,000 Eines davon ist die Ereignisse, die kann ich registrieren. 512 00:27:24,000 --> 00:27:28,000 Dies sind all jene Methoden, die ich in meiner h-Datei als IBActions erklärt. 513 00:27:28,000 --> 00:27:31,000 Dies ist, wie XCode weiß, was in dieser kleinen Liste angezeigt wird, 514 00:27:31,000 --> 00:27:33,000 so das ist nur ein Hinweis. 515 00:27:33,000 --> 00:27:37,000 Wenn ich auf Taste gedrückt, ich habe jetzt den Event-Handler registriert. 516 00:27:37,000 --> 00:27:41,000 In JavaScript mussten wir sagen, ich habe einige Code, den Event-Handler registriert. 517 00:27:41,000 --> 00:27:43,000 In Objective-C, es war wirklich so einfach. 518 00:27:43,000 --> 00:27:46,000 Wenn ich laufen diese wieder 519 00:27:46,000 --> 00:27:49,000 Jetzt wenn ich die Taste drücke meine Event-Handler wird ausgelöst, 520 00:27:49,000 --> 00:27:51,000 und ich werde um dieses Popup. 521 00:27:51,000 --> 00:27:54,000 Super, super einfach da. 522 00:27:54,000 --> 00:27:57,000 >> Wenn Sie schon immer einmal alle Ereignisse, die registriert werden passieren, siehe 523 00:27:57,000 --> 00:28:00,000 auf einer Komponente, wenn ich auf diese Schaltfläche klicken 524 00:28:00,000 --> 00:28:02,000 und ich komme hier auf der rechten Seite 525 00:28:02,000 --> 00:28:05,000 erstes sehen Sie hier kann ich Dinge wie die Art des Knopfes zu tun, 526 00:28:05,000 --> 00:28:08,000 wenn Sie so wollen eine jener Ich-oder die Taste Add Contact 527 00:28:08,000 --> 00:28:10,000 oder was auch immer. 528 00:28:10,000 --> 00:28:13,000 Wenn ich will, um alle Ereignisse, die auf diesen Button zu sehen 529 00:28:13,000 --> 00:28:16,000 wenn ich den ganzen Weg hierher auf der rechten Seite 530 00:28:16,000 --> 00:28:19,000 Wir können hier sehen, bei den Veranstaltungen habe ich all diese verschiedenen Veranstaltungen. 531 00:28:19,000 --> 00:28:23,000 Ich kann die Taste drücken, wenn ich lasse Sie die Taste los, wenn ich Leitungswasser verdoppeln oder was auch immer, 532 00:28:23,000 --> 00:28:26,000 und die, die ich gerade registriert ist diese Veranstaltung namens Touch Up Inside, 533 00:28:26,000 --> 00:28:29,000 und das sagt, dass sobald meine Finger weg kommt die Taste 534 00:28:29,000 --> 00:28:32,000 das Ereignis wird an Feuer gehen, und das ist genau das, was gerade passiert ist. 535 00:28:32,000 --> 00:28:36,000 Dies ist eine Art der Standard-Taste gedrückt Veranstaltung. 536 00:28:36,000 --> 00:28:39,000 >> Fragen so weit? 537 00:28:39,000 --> 00:28:43,000 Okay, das ist, wie können wir anfangen zu verdrahten Dinge in unserem Code 538 00:28:43,000 --> 00:28:46,000 in die Dinge innerhalb unserer Schnittstelle. 539 00:28:46,000 --> 00:28:49,000 Denken Sie an die erste Sache, die wir tun mussten, war, um den Code zu finden, 540 00:28:49,000 --> 00:28:54,000 und dann werden wir verdrahtet die Schnittstelle zum Code 541 00:28:54,000 --> 00:28:57,000 und es ist unsere erste App. 542 00:28:57,000 --> 00:29:00,000 Okay, das war wirklich cool, und wir haben diese Schaltfläche. 543 00:29:00,000 --> 00:29:03,000 Was passiert, wenn wir nicht haben wollen, um ein Bündel von Eigenschaften zu schaffen 544 00:29:03,000 --> 00:29:05,000 repräsentieren diese Tasten? 545 00:29:05,000 --> 00:29:08,000 Zum Beispiel, in Tic Tac Toe Ich habe 9 Tasten, 546 00:29:08,000 --> 00:29:11,000 und es wäre super, super ärgerlich, per Drag-and-Drop 9 mal 547 00:29:11,000 --> 00:29:14,000 oder wenn ich musste Tic Tac Toe mit 81 zu machen statt 9 548 00:29:14,000 --> 00:29:17,000 und ich musste per Drag & Drop 81 mal, und das ist lahm. 549 00:29:17,000 --> 00:29:20,000 Was können wir tun, anstatt viel wie ein HTML 550 00:29:20,000 --> 00:29:23,000 wenn wir hatten Dinge wie IDs und Namen, und wir können für Dinge suchen 551 00:29:23,000 --> 00:29:27,000 durch ihre ID, gibt es eine ähnliche Vorstellung in iOS Tags genannt. 552 00:29:27,000 --> 00:29:31,000 >> Ein Tag ist einfach eine eindeutige numerische Kennung für eine Komponente. 553 00:29:31,000 --> 00:29:34,000 Wenn ich sage, hat dies einen Tag von 0, zum Beispiel, 554 00:29:34,000 --> 00:29:38,000 wenn ich eine Schaltfläche erstellen, und geben Sie ihm einen Tag von 0, und wir werden sehen, wie man das in nur einer Sekunde zu tun, 555 00:29:38,000 --> 00:29:41,000 wenn ich diesen Knopf zu wollen, kann ich einfach sagen, dass ich anrufen möchten 556 00:29:41,000 --> 00:29:45,000 Die viewWithTag Methode für das Objekt hier rüber, 557 00:29:45,000 --> 00:29:48,000 die self.view, die das aktuelle Bild darstellt, zum Beispiel. 558 00:29:48,000 --> 00:29:53,000 Wenn ich diese viewWithTag Methode aufrufen, werde ich zurück zu ziehen Sie die Schaltfläche mit tag 0. 559 00:29:53,000 --> 00:29:58,000 Werfen wir einen Blick auf diese durch den Bau Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Erstens ist dies mein Storyboard. 561 00:30:01,000 --> 00:30:05,000 Ich habe diese 10 UI Schaltflächen erstellt. 562 00:30:05,000 --> 00:30:07,000 Beachten sie alle die gleiche Größe. 563 00:30:07,000 --> 00:30:11,000 Wenn ich auf eines davon und ich komme zurück auf hier auf dieser rechten Seite 564 00:30:11,000 --> 00:30:15,000 du wirst sehen, ich stellte den font genau hier, so habe ich die Schrift ein wenig größer, 565 00:30:15,000 --> 00:30:19,000 aber was ich auch tat, war ich dieses Tag. 566 00:30:19,000 --> 00:30:23,000 Ich sagte, dass dies ein Tag von 1 hat, und das ist das oben links. 567 00:30:23,000 --> 00:30:26,000 >> Nun, wenn ich eine andere Schaltfläche klicken, wie diese zweite hier 568 00:30:26,000 --> 00:30:29,000 Jetzt sehen Sie, dass mein tag 2 ist. 569 00:30:29,000 --> 00:30:32,000 Jede dieser Tasten hat nur eine eindeutige Kennung, 570 00:30:32,000 --> 00:30:35,000 und so wird später wie ich anfangen zu interagieren 571 00:30:35,000 --> 00:30:38,000 mit meiner App. 572 00:30:38,000 --> 00:30:40,000 Das ist alles innerhalb von einem View-Controller, 573 00:30:40,000 --> 00:30:42,000 aber hier ist das, was wir haben. 574 00:30:42,000 --> 00:30:44,000 Wir haben 3 Immobilien hier. 575 00:30:44,000 --> 00:30:49,000 Die erste und letzte gehen, um den Zustand der mein Board vertreten. 576 00:30:49,000 --> 00:30:53,000 Grundsätzlich ist dieser erste ist ein Array darstellt, wo die Xs und Os sind. 577 00:30:53,000 --> 00:30:57,000 Das andere hier sagt uns der Reihe ist. 578 00:30:57,000 --> 00:31:01,000 Sie werden bemerken, dass ich auch diese Dinge hier. 579 00:31:01,000 --> 00:31:05,000 Vor wenn wir deklarierten Eigenschaften gaben wir ihnen einen Namen und einen Typ. 580 00:31:05,000 --> 00:31:08,000 Wir können ihnen auch einige zusätzliche Informationen hier. 581 00:31:08,000 --> 00:31:11,000 Das erste besagt, atomare, und was sagt das 582 00:31:11,000 --> 00:31:16,000 ist im Grunde nur eine Sache jemals versuchen, diese Variable zu einem Zeitpunkt zugreifen. 583 00:31:16,000 --> 00:31:19,000 Sie könnten mehr tun, komplexe Anwendungen, die multi-threaded sind, 584 00:31:19,000 --> 00:31:22,000 und so wieder in Scratch wir hatten verschiedene Themen, 585 00:31:22,000 --> 00:31:25,000 und verschiedene Sprites tun könnte verschiedene Dinge zur gleichen Zeit. 586 00:31:25,000 --> 00:31:29,000 >> Wenn das nicht der Fall, was es an nichts, dass wir am zu suchen, 587 00:31:29,000 --> 00:31:33,000 wenn wir atomare sagen, es ist eigentlich los, um die Dinge ein wenig schneller. 588 00:31:33,000 --> 00:31:37,000 Wir haben auch dieses Ding namens assign, stark oder schwach. 589 00:31:37,000 --> 00:31:40,000 Diese weisen nur sagt, dass dies ein Standard-Typ ist. 590 00:31:40,000 --> 00:31:43,000 Dies ist nicht ein Objekt oder ein Zeiger, denn dies ist nur ein bool, 591 00:31:43,000 --> 00:31:46,000 so bool in Objective-C gebaut. 592 00:31:46,000 --> 00:31:49,000 Das sagt nicht versuchen, etwas Besonderes mit Zeigern hier tun. 593 00:31:49,000 --> 00:31:51,000 Es ist eine regelmäßige alte Scaler. 594 00:31:51,000 --> 00:31:54,000 Starke und schwache, sagt dieser schwach, dass tatsächlich 595 00:31:54,000 --> 00:31:57,000 Ich möchte dies etwas in der View-Controller zeigen. 596 00:31:57,000 --> 00:32:00,000 Ich werde mich nicht um tatsächlich zuweisen oder init diese selber. 597 00:32:00,000 --> 00:32:04,000 Der Interface Builder, wenn ich die app laufen, wird alle, dass die Initialisierung zu behandeln. 598 00:32:04,000 --> 00:32:07,000 Wenn ich schwach sagen, sagt, dass jemand anderes wird zu erschaffen dies. 599 00:32:07,000 --> 00:32:09,000 Wenn ich stark zu sagen, sagt dieser, dass ich werde derjenige sein, 600 00:32:09,000 --> 00:32:12,000 Das ist die Schaffung dieses Board Objekt, 601 00:32:12,000 --> 00:32:14,000 und so habe ich hier einige weitere Methoden hier 602 00:32:14,000 --> 00:32:18,000 beispielsweise eine Aktion für, wenn das neue Spiel Taste betätigt wird, 603 00:32:18,000 --> 00:32:20,000 eine Aktion für, wenn keines der anderen gedrückt werden, 604 00:32:20,000 --> 00:32:23,000 und et cetera. 605 00:32:23,000 --> 00:32:26,000 >> Wir werden nicht in zu viel von der Logik des Tic Tac Toe zu bekommen, 606 00:32:26,000 --> 00:32:30,000 obwohl es sehr spannend, aber lassen Sie uns einen Blick auf 607 00:32:30,000 --> 00:32:33,000 einige der Dinge, die wir im Inneren des iOS tun können. 608 00:32:33,000 --> 00:32:35,000 Dieses neue Spiel-Methode wird gefeuert werden 609 00:32:35,000 --> 00:32:37,000 wenn ich drücken Sie die neuen Spiel-Taste. 610 00:32:37,000 --> 00:32:41,000 Um Haken, dass bis ich einfach zu mir kommen Storyboard. 611 00:32:41,000 --> 00:32:43,000 Ich klickte auf neues Spiel. 612 00:32:43,000 --> 00:32:47,000 Wenn ich hier rüber kommen an der richtigen kann ich sehen, dass 613 00:32:47,000 --> 00:32:50,000 Touch Up Inside ist der newGame Verfahren verdrahtet. 614 00:32:50,000 --> 00:32:53,000 Das ist, warum dies wird gefeuert. 615 00:32:53,000 --> 00:32:56,000 Die newGame Verfahren wird einige Set zu tun up. 616 00:32:56,000 --> 00:32:59,000 Es wird zu sagen, ich möchte, dass du den Zustand des Boards löschen. 617 00:32:59,000 --> 00:33:01,000 Dies ist eine schöne Methode veränderlichen Arrays. 618 00:33:01,000 --> 00:33:03,000 Dies wird zu sagen, es ist jetzt X an der Reihe, 619 00:33:03,000 --> 00:33:07,000 und jetzt werde ich die Vorteile dieser viewWithTag Sache zu nehmen. 620 00:33:07,000 --> 00:33:11,000 >> Ich weiß, dass meine Tasten die Tags 1-9, 621 00:33:11,000 --> 00:33:13,000 und das ist etwas, das ich willkürlich ausgewählt. 622 00:33:13,000 --> 00:33:15,000 Wenn ich will, um den Text der einzelnen Tasten eingestellt leer zu sein 623 00:33:15,000 --> 00:33:17,000 weil ich gerade erst begonnen ein neues Spiel, und ich will nicht, dass 624 00:33:17,000 --> 00:33:20,000 Xs oder Os nach links über I kann dies tun. 625 00:33:20,000 --> 00:33:24,000 Ich kann sagen, ich möchte die Ansicht mit dem Tag, 1, 2, 3, 4 et cetera. 626 00:33:24,000 --> 00:33:27,000 Dies wird zu ziehen eine andere Taste jeder Zeit. 627 00:33:27,000 --> 00:33:30,000 Hier habe ich werde es gegossen, um UIButton. 628 00:33:30,000 --> 00:33:33,000 Genau wie wir konnten ints zu Schwimmern und umgekehrt gegossen 629 00:33:33,000 --> 00:33:37,000 Diese sagt, dass ich dies zu einer UIButton gegossen werden soll. 630 00:33:37,000 --> 00:33:40,000 Das heißt, die Art der dies ein UIButton sein * 631 00:33:40,000 --> 00:33:43,000 wegen der Zeiger, aber keine Sorge, sie sind nicht gruselig mehr. 632 00:33:43,000 --> 00:33:47,000 >> Einmal habe ich diese Taste ich eine Methode nennen werde. 633 00:33:47,000 --> 00:33:50,000 Diese Methode wird aufgerufen setTitle fürState, und so das sagt 634 00:33:50,000 --> 00:33:53,000 Ich möchte den Text der Schaltfläche auf die leere Zeichenkette, 635 00:33:53,000 --> 00:33:57,000 und ich will es auf die leere Zeichenkette, wenn es nicht gedrückt sein. 636 00:33:57,000 --> 00:34:01,000 Wenn ich mit dieser Methode bin, kann ich den Text der Schaltfläche 637 00:34:01,000 --> 00:34:04,000 sobald jemand trifft, aber wir sagen wollen, wenn die Taste nur da sitzen 638 00:34:04,000 --> 00:34:07,000 Ich möchte den Text leer zu sein. 639 00:34:07,000 --> 00:34:10,000 Schließlich werden wir mein Board zu initialisieren, 640 00:34:10,000 --> 00:34:12,000 und ich werde sagen, dass alles derzeit bei 0, 641 00:34:12,000 --> 00:34:15,000 so dass diese Vorstandsmitglieder unveränderlich ist eine veränderliche Array 642 00:34:15,000 --> 00:34:21,000 was bedeutet, ich kann die addObject Methode und nur 0 Innenseite es nennen. 643 00:34:21,000 --> 00:34:23,000 Das ist, was passiert, wenn ich ein neues Spiel zu erstellen. 644 00:34:23,000 --> 00:34:25,000 >> Werfen wir einen Blick auf ein anderes. 645 00:34:25,000 --> 00:34:28,000 Diese Methode ist hier die IBAction, werde gedrückt werden ist 646 00:34:28,000 --> 00:34:31,000 jedes Mal, wenn einer dieser Plätze gedrückt wird. 647 00:34:31,000 --> 00:34:33,000 Jetzt haben wir einige Tic Tac Toe Logik hier. 648 00:34:33,000 --> 00:34:36,000 Wir herauszufinden, wer an der Reihe ist, 649 00:34:36,000 --> 00:34:39,000 und auf der Grundlage, dass wir entweder ein X oder ein O, 650 00:34:39,000 --> 00:34:43,000 aber wir bemerken, dass wir Wiederverwendung dieses gleichen Event-Handler 651 00:34:43,000 --> 00:34:45,000 für jeden einzelnen dieser Tasten. 652 00:34:45,000 --> 00:34:49,000 Das bedeutet, dass ich nicht über eine Methode für die linke obere Taste 653 00:34:49,000 --> 00:34:52,000 eine andere Methode für die rechte untere Taste, obwohl ich das getan haben. 654 00:34:52,000 --> 00:34:54,000 Das wäre nicht wirklich gut ausgebildet sein. 655 00:34:54,000 --> 00:34:57,000 Was ich hier mache ist, dass ich eigentlich vor sich geht, um festzustellen, 656 00:34:57,000 --> 00:35:00,000 was der tag der Taste, die gedrückt wurde ist. 657 00:35:00,000 --> 00:35:04,000 Man merkt, dass diese Methode für das Spielen ein Argument. 658 00:35:04,000 --> 00:35:07,000 Es heißt Absender, und was Absenders wird Absender zu gehen 659 00:35:07,000 --> 00:35:10,000 stellen genau das, was Wirkung auf genommen. 660 00:35:10,000 --> 00:35:15,000 Wenn ich eine Taste drücken, wird dieser Sender werde, dass UIButton sein 661 00:35:15,000 --> 00:35:18,000 dass ich tatsächlich gedrückt wird, so dass, dass UIButton 662 00:35:18,000 --> 00:35:20,000 hat einen Tag, weil ich einen Tag erstellt. 663 00:35:20,000 --> 00:35:23,000 >> Wenn ich an dem Tag erhalten wollen, kann ich nur sagen, 664 00:35:23,000 --> 00:35:26,000 Ich will den Tag des Absenders, 665 00:35:26,000 --> 00:35:28,000 und wieder, ich habe es gerade zu einem UIButton gegossen. 666 00:35:28,000 --> 00:35:32,000 Ich weiß zufällig, dass der Absender wird ein UIButton sein. 667 00:35:32,000 --> 00:35:34,000 Es muss nicht immer ein UIButton sein. 668 00:35:34,000 --> 00:35:36,000 Ich könnte zum Beispiel, registrieren Sie den gleichen Event-Handler 669 00:35:36,000 --> 00:35:38,000  Für eine für eine Taste, eine für einen Schieber. 670 00:35:38,000 --> 00:35:40,000 In diesem Fall, ich weiß, sie sind alle Tasten, so werde ich sagen, 671 00:35:40,000 --> 00:35:43,000 Ich möchte dies eine Schaltfläche, und dann kann ich den Tag zu bekommen, 672 00:35:43,000 --> 00:35:48,000 und von dem Tag weiß ich jetzt, wo ich Innenseite der Platte bin. 673 00:35:48,000 --> 00:35:51,000 Dann kann ich einfach gesetzt entweder das X oder das O, die wiederum spiegeln, 674 00:35:51,000 --> 00:35:54,000 überprüfen, wer hat, et cetera gewonnen. 675 00:35:54,000 --> 00:35:59,000 >> Haben Sie Fragen zu diesem so weit? 676 00:35:59,000 --> 00:36:02,000 Okay, alle Code, den wir online gebucht, wir wollen nicht in zu viel bekommen 677 00:36:02,000 --> 00:36:06,000 der Tic Tac Toe Logik, aber jetzt können Sie das wirklich sehen 678 00:36:06,000 --> 00:36:09,000 alles, was wir tun ist, dass wir über dieses Array Looping, 679 00:36:09,000 --> 00:36:13,000 so haben wir ein paar for-Schleifen hier, und wir sind nur im Vergleich zu sehen, 680 00:36:13,000 --> 00:36:18,000 haben wir ein Match in allen Zeilen, ein Spiel in einer Spalte oder so etwas. 681 00:36:18,000 --> 00:36:21,000 Um tatsächlich führen Sie dieses app, wenn ich tippen Sie auf eine dieser Schaltflächen 682 00:36:21,000 --> 00:36:24,000 daß play-Methode gefeuert wurde, so dass bedeutet Ich habe gerade 683 00:36:24,000 --> 00:36:31,000 die Taste, um ein X sein, so dass nun mit dieser Taste wird ein O sein, und so weiter, 684 00:36:31,000 --> 00:36:35,000 und damit ist, wie wir fangen an, mit diesem einzigen Seite App interagieren. 685 00:36:35,000 --> 00:36:38,000 >> Wir werden den Code zu veröffentlichen, so zögern Sie nicht, dass durchgehen, 686 00:36:38,000 --> 00:36:43,000 aber lassen Sie uns nun über einige Apps, die mehr als nur eine Seite sind, zu sprechen. 687 00:36:43,000 --> 00:36:47,000 So spannend wie Tic Tac Toe war, eine Menge von Anwendungen innerhalb iOS 688 00:36:47,000 --> 00:36:50,000 sind so eine Art dieser Drilldown Dinge mit mehreren Bildschirmen. 689 00:36:50,000 --> 00:36:54,000 Das erste Konzept, das wir brauchen, um darüber zu sprechen sind Protokolle, 690 00:36:54,000 --> 00:36:57,000 und ein Protokoll ist einfach eine Reihe von Methoden 691 00:36:57,000 --> 00:36:59,000 dass Sie versprechen, zu definieren. 692 00:36:59,000 --> 00:37:02,000 Wenn ich erstellen dieses neue Protokoll mit 2 Methoden, diese erste, 693 00:37:02,000 --> 00:37:05,000 wenn der Rückgabetyp void ist, nannte ich es foo. 694 00:37:05,000 --> 00:37:07,000 Es dauert keine Argumente. Ich habe eine andere Methode. 695 00:37:07,000 --> 00:37:11,000 Es gibt einen int. Ich nannte es sperren, und es dauert ein Argument. 696 00:37:11,000 --> 00:37:14,000 All dieses Protokoll ist, dass ist SomeProtocol aufgerufen hier 697 00:37:14,000 --> 00:37:19,000 dies ist eine Reihe von Dingen, dass jemand zu implementieren. 698 00:37:19,000 --> 00:37:22,000 Ich habe nicht in dieses Protokolls gesagt, was foo tut. 699 00:37:22,000 --> 00:37:26,000 Stattdessen werde ich nur sagen, man könnte foo definieren, wenn Sie wollen. 700 00:37:26,000 --> 00:37:30,000 Wenn ich die Schaffung eines View-Controller oder das Erstellen einer Klasse 701 00:37:30,000 --> 00:37:33,000 Ich kann innerhalb dieser Klasse Versprechen umsetzen 702 00:37:33,000 --> 00:37:40,000 einige dieser Methoden, so zum Beispiel, wenn Sie sagen 703 00:37:40,000 --> 00:37:43,000 das jetzt sagt, ich bin ein Versprechen Sie, dass im Inneren 704 00:37:43,000 --> 00:37:50,000 dieser Ansicht Controller-Klasse werde ich Definitionen für sowohl foo und bar. 705 00:37:50,000 --> 00:37:52,000 >> Warum ist das sinnvoll? 706 00:37:52,000 --> 00:37:55,000 Viele Komponenten im Inneren des iOS nutzen diese 707 00:37:55,000 --> 00:37:58,000 Entwurfsmuster bezeichnet Delegation, und was Delegation, sagt 708 00:37:58,000 --> 00:38:01,000 ist, dass, zum Beispiel, wenn ich ein Textfeld haben 709 00:38:01,000 --> 00:38:04,000 und es gibt einige Ereignisse, die Innenseite meiner Textfeld registriert werden konnte, 710 00:38:04,000 --> 00:38:07,000 , anstatt separate Ereignisse, was ich tun kann, ist, dass ich sagen kann, 711 00:38:07,000 --> 00:38:10,000 der Delegierte diesem Textfeld wird ein Gegenstand sein. 712 00:38:10,000 --> 00:38:13,000 Wenn ich sage, dass dies ein Delegierter ist nun, dass bedeutet, dass 713 00:38:13,000 --> 00:38:16,000 wenn ein Ereignis würde in das Textfeld abgefeuert worden 714 00:38:16,000 --> 00:38:18,000 anstatt sie oder so etwas registrieren 715 00:38:18,000 --> 00:38:21,000 ist es nur geht, um eine Methode für den Delegaten aufrufen. 716 00:38:21,000 --> 00:38:24,000 Zum Beispiel, Innenseite meiner Textfeld Ich habe eine Methode, wenn ich drücken Sie 717 00:38:24,000 --> 00:38:27,000 getan Schaltfläche in der rechten unteren Ecke, 718 00:38:27,000 --> 00:38:30,000 und so anstatt Registrierung Ereignishandler, was ich sagen kann ist, 719 00:38:30,000 --> 00:38:34,000 Textfeld, hier ist ein Objekt, das ich will, dass du eine Methode aufrufen 720 00:38:34,000 --> 00:38:37,000 jedes Mal, wenn jemand drückt auf die Schaltfläche Fertig, 721 00:38:37,000 --> 00:38:40,000 und das bedeutet, dass das Objekt etwas Protokoll implementieren muss 722 00:38:40,000 --> 00:38:45,000 das sagt, ich verspreche, dass getan Button-Aktion definieren, 723 00:38:45,000 --> 00:38:47,000 denn wenn es nicht definieren, dass Methode und Sie drücken Sie Fertig, 724 00:38:47,000 --> 00:38:49,000 dann wird es verwirrend sein. 725 00:38:49,000 --> 00:38:55,000 >> Werfen wir einen Blick auf ein Beispiel. 726 00:38:55,000 --> 00:38:58,000 Hier habe ich einfach ein Textfeld, 727 00:38:58,000 --> 00:39:04,000 und eine der Eigenschaften dieses Textfeld über hier auf dieser rechten Seite ist der Delegierte. 728 00:39:04,000 --> 00:39:06,000 Dies ist eine Eigenschaft aus der Klasse. 729 00:39:06,000 --> 00:39:09,000 Was ich getan habe ist hier kontrolliere ich geklickt, und ich schleppte von dieser Stelle hier 730 00:39:09,000 --> 00:39:13,000 der View-Controller, und das sagt jetzt die Delegierten dieses Textfeld 731 00:39:13,000 --> 00:39:18,000 wird die View-Controller sein. 732 00:39:18,000 --> 00:39:20,000 Das bedeutet, dass, wenn einige Aktionen passieren, anstatt Registrierung 733 00:39:20,000 --> 00:39:25,000 separate Ereignishandler Ich möchte, dass sie an die Delegierten zu senden. 734 00:39:25,000 --> 00:39:28,000 Werfen wir nun einen Blick auf meine View-Controller. 735 00:39:28,000 --> 00:39:32,000 Innerhalb der. H-Datei Ich habe ein Versprechen gegeben. 736 00:39:32,000 --> 00:39:36,000 Ich habe versprochen, einige Methoden innerhalb dieses Protokoll implementieren 737 00:39:36,000 --> 00:39:38,000 genannt UITextFieldDelegate, und wieder 738 00:39:38,000 --> 00:39:42,000 dies sind nur einige Liste einiger Dinge, die ich wählen umsetzen können. 739 00:39:42,000 --> 00:39:46,000 >> Wenn ich hier in meiner. M-Datei kommen, habe ich eine solche Methode implementiert. 740 00:39:46,000 --> 00:39:49,000 Ich habe es nannte textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 weil das ist, was es im Inneren des Protokolls aufgerufen wurde. 742 00:39:52,000 --> 00:39:57,000 Und jetzt, wenn ich drücken Sie die Schaltfläche Fertig Inneren dieses Textfeld 743 00:39:57,000 --> 00:40:00,000 Dies ist, was los ist, um aufgerufen werden, so dass ich nicht registrieren Sie einen Event-Handler. 744 00:40:00,000 --> 00:40:03,000 Ich habe den Delegierten, und wenn dieses Ereignis ausgelöst 745 00:40:03,000 --> 00:40:08,000 Dies ist die Methode, die aufgerufen wird, so dass, wenn ich über kommen hierher, um mein Storyboard und führen Sie es- 746 00:40:08,000 --> 00:40:11,000 Während das ist Beladen können wir sehen, was hier geschieht. 747 00:40:11,000 --> 00:40:13,000 Auf meinem Bildschirm Ich habe 2 Dinge. 748 00:40:13,000 --> 00:40:16,000 Ich habe dieses Textfeld, und ich habe dieses Etikett vorzeigen. 749 00:40:16,000 --> 00:40:19,000 Ich bin einfach zu sagen, ich will den Text des Labels 750 00:40:19,000 --> 00:40:23,000 um gleich was der Benutzer im Inneren des Textfeld eingegeben haben. 751 00:40:23,000 --> 00:40:26,000 Das nächste Zeile hier ist einfach eine Methode, die ich anrufe 752 00:40:26,000 --> 00:40:29,000 auf das Textfeld, dass ich möchte, dass du die Tastatur auszublenden sagt. 753 00:40:29,000 --> 00:40:33,000 Dies ist nur die willkürliche Verfahren, dass Apple wollte. 754 00:40:33,000 --> 00:40:38,000 >> Auch bevor ich irgendetwas musste ich alles verkabeln hat, so dass ich zum ersten Mal hier. 755 00:40:38,000 --> 00:40:42,000 Aus der Sicht Regler I ziehen Sie über das Textfeld. 756 00:40:42,000 --> 00:40:46,000 Ich lasse, und ich kann hier sehen, dass ich diese in das Textfeld Eigentum zu machen 757 00:40:46,000 --> 00:40:49,000 da hier in der View-Controller Ich habe eine Eigenschaft definiert 758 00:40:49,000 --> 00:40:52,000 das ist ein IBOutlet von einem Textfeld. 759 00:40:52,000 --> 00:40:55,000 Dieser sagt, dass ich können diese Eigenschaft verkabeln 760 00:40:55,000 --> 00:40:59,000 einem Textfeld in meinem UI. 761 00:40:59,000 --> 00:41:03,000 Nun, wenn ich darauf klicken kann ich anfangen zu tippen. 762 00:41:03,000 --> 00:41:06,000 Nun, wenn ich das getan klicken, das wird zu feuern 763 00:41:06,000 --> 00:41:08,000 ein Ereignis, dass ich jetzt zu reagieren. 764 00:41:08,000 --> 00:41:10,000 Keine Event-Handler. 765 00:41:10,000 --> 00:41:13,000 Das ist, wie ich reagierte auf diese Schaltfläche Fertig. 766 00:41:13,000 --> 00:41:15,000 Sinn? 767 00:41:15,000 --> 00:41:20,000 >> Dies ist nicht ein Entwurfsmuster, dass-Sie vielleicht nicht immer finden sich 768 00:41:20,000 --> 00:41:23,000 Erstellen Ihrer eigenen Protokoll, sondern nur wissen, dass einige 769 00:41:23,000 --> 00:41:27,000 verschiedenen iOS Komponenten registrieren Veranstaltungen in unterschiedlicher Weise. 770 00:41:27,000 --> 00:41:29,000 Buttons, zum Beispiel, verwenden Sie diese IBActions. 771 00:41:29,000 --> 00:41:32,000 Textfelder, auf der anderen Seite gehen, um Delegaten verwenden. 772 00:41:32,000 --> 00:41:36,000 Wir können sehen, und Sie können all das im Inneren der Dokumentation. 773 00:41:36,000 --> 00:41:41,000 By the way, gibt es eigentlich eine Tonne UI Zeug in iOS für Sie gebaut, 774 00:41:41,000 --> 00:41:46,000 so zum Beispiel die Art und Weise habe ich sagen, dass in der unteren rechten getan 775 00:41:46,000 --> 00:41:48,000 ist Ich empfehle dieses Textfeld. 776 00:41:48,000 --> 00:41:50,000 Ich kam hierher. 777 00:41:50,000 --> 00:41:53,000 I nach unten gescrollt ein bisschen zu Schlüssel zurückgeben, 778 00:41:53,000 --> 00:41:56,000 und ich kann eigentlich machen dies eine ganze Reihe von Dingen, wie wenn ich will, dass zu sagen, 779 00:41:56,000 --> 00:42:00,000 Notruf sondern ich kann das tun, was völlig zufällig, 780 00:42:00,000 --> 00:42:02,000 und ich weiß nicht, warum es einen eingebauten Notruftaste, 781 00:42:02,000 --> 00:42:06,000 aber dort, es sagt Notruf wirklich kleine Buchstaben. 782 00:42:06,000 --> 00:42:08,000 There you go. 783 00:42:08,000 --> 00:42:12,000 >> Definitiv zu erforschen all diese verschiedenen Optionen in iOS. 784 00:42:12,000 --> 00:42:14,000 Haben Sie Fragen zum Delegierten? 785 00:42:14,000 --> 00:42:18,000 Wieder nur ein interessantes Design Pattern, das Sie kennen sollten. 786 00:42:18,000 --> 00:42:22,000 Okay, lasst uns weiter einen Blick auf Tabelle Aussicht. 787 00:42:22,000 --> 00:42:26,000 Eine Tabelle Ansicht ist im Grunde, dass der Posten, die alle über dem Platz in iOS ist. 788 00:42:26,000 --> 00:42:29,000 Wenn Sie durch alle Ihre Kontakte Spiegeln, du bist auf der Suche 789 00:42:29,000 --> 00:42:34,000 die Einrichtung Seite, und diese Art von Liste der Dinge ist eine Tabellenansicht genannt. 790 00:42:34,000 --> 00:42:37,000 Die Implementierung einer Tabellenansicht in iOS ist ziemlich einfach. 791 00:42:37,000 --> 00:42:41,000 Anstatt eine Klasse, die von diesem abwärts UIViewController 792 00:42:41,000 --> 00:42:44,000 wie wir getan haben, bevor wir brauchen einfach zu sagen, anstatt 793 00:42:44,000 --> 00:42:46,000 alles, was ein UIViewController Ich will tun, 794 00:42:46,000 --> 00:42:50,000 Ich sage alles, was ein UITableViewController ich tun will, 795 00:42:50,000 --> 00:42:54,000 so dass Sie einfach fügt einige zusätzliche Dinge, die völlig für uns getan werden. 796 00:42:54,000 --> 00:42:58,000 Wir müssen sehr wenig grundsätzlich in die Lücken innerhalb der Tabelle zu füllen tun. 797 00:42:58,000 --> 00:43:02,000 >> Zur Anzeige einer Tabelle Ich muss einige Fragen zu beantworten. 798 00:43:02,000 --> 00:43:06,000 Die erste Frage, die ich beantworten müssen ist, wie viele Abschnitte sind in der Tabelle? 799 00:43:06,000 --> 00:43:08,000 Wenn Sie durch Ihre Kontakte App Spiegeln Sie feststellen, dass es eine Art ist 800 00:43:08,000 --> 00:43:12,000 organisiert von der As, dann haben Sie die Bs, und Sie haben das kleine Sub-Header. 801 00:43:12,000 --> 00:43:14,000 Jeder von denen wird als ein Abschnitt. 802 00:43:14,000 --> 00:43:16,000 Sie kann oder auch nicht brauchen diese. 803 00:43:16,000 --> 00:43:19,000 Das erste, was Sie tun müssen, ist eine Methode implementieren 804 00:43:19,000 --> 00:43:22,000 genannt tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Das gibt einfach, wie viele Abschnitte, die Sie haben, 806 00:43:25,000 --> 00:43:29,000 so könnte dies zu sagen wieder ein, wenn Sie einen großen Tisch Blick haben. 807 00:43:29,000 --> 00:43:33,000 Die nächste Frage, dass iOS wissen muss, ist, wie viele Zeilen haben Sie? 808 00:43:33,000 --> 00:43:36,000 Zum Beispiel, du bist durch einen Tisch Blick Spiegeln. 809 00:43:36,000 --> 00:43:39,000 Sie haben eine feste Anzahl von Songs, die Sie auf der Suche sind oder eine feste Anzahl von Kontakten. 810 00:43:39,000 --> 00:43:41,000 Wenn Sie mich natürlich nicht, dass viele, 811 00:43:41,000 --> 00:43:44,000 und damit ist, wie iOS weiß, wie viele Zellen anzuzeigen. 812 00:43:44,000 --> 00:43:46,000 >> Auch könnte dies etwas sagen wie Rücklauf 3. 813 00:43:46,000 --> 00:43:49,000 Mein Tisch Ansicht hat 3 Zeilen. 814 00:43:49,000 --> 00:43:52,000 Schließlich muss iOS zu wissen, was jede Zelle aussieht, 815 00:43:52,000 --> 00:43:54,000 so, was es tatsächlich tun werden, ist diese Methode aufrufen, hier unten, 816 00:43:54,000 --> 00:43:57,000 Diese tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Es wird diese Methode auf jeder einzelnen Zelle im Inneren der Tabelle nennen. 818 00:44:01,000 --> 00:44:03,000 Woher weiß er, wie oft es nennen? 819 00:44:03,000 --> 00:44:06,000 Nun, Sie sagten es in der Anzahl der Zeilen im Schnitt. 820 00:44:06,000 --> 00:44:08,000 Wir werden dies auf jeder unserer Zellen nennen, 821 00:44:08,000 --> 00:44:11,000 und innerhalb dieser ist, wo man tatsächlich Dinge tun, wie 822 00:44:11,000 --> 00:44:16,000 setzen Sie den Text oder sagen Ihnen, was die kleine blaue Taste auf der rechten Seite tut. 823 00:44:16,000 --> 00:44:19,000 Das Muster für immer diese Zellen, werden wir diese Methode verwenden 824 00:44:19,000 --> 00:44:22,000 genannt dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C ist eigentlich sehr bekannt für die lächerliche Länge ihrer Methode Namen, 826 00:44:29,000 --> 00:44:32,000 und das ist wirklich ein schönes Beispiel dafür Beispiel. 827 00:44:32,000 --> 00:44:37,000 Was diese Methode tut, ist dies nur sagt, ich will, dass du mir eine Zelle. 828 00:44:37,000 --> 00:44:39,000 Nur ein iOS Sache. 829 00:44:39,000 --> 00:44:41,000 Wenn Sie so etwas wie 100.000 Songs auf Ihrem iPod 830 00:44:41,000 --> 00:44:45,000 was iOS nicht tun möchte, ist zuzuweisen 100.000 Zellen, 831 00:44:45,000 --> 00:44:48,000 denn wenn man an der Spitze der Liste sind, brauchen Sie wirklich brauchen, um Speicher zu reservieren 832 00:44:48,000 --> 00:44:51,000 für die Zelle, 99.000 Zeilen nach unten ist? 833 00:44:51,000 --> 00:44:55,000 Nein, denn wie Sie Scrollen sind, können Sie Art zuordnen, wie Sie entlang gehen. 834 00:44:55,000 --> 00:44:57,000 Dies wird für Sie erledigt. 835 00:44:57,000 --> 00:44:59,000 Sie müssen nicht über alle diese dumme Leistung Sachen kümmern. 836 00:44:59,000 --> 00:45:02,000 Alles, was Sie sagen, ist, dass Sie diese Methode aufrufen dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 und das sagt, okay, wenn du ich werde eine neue Zelle für Sie erstellen müssen. 838 00:45:06,000 --> 00:45:09,000 >> Aber wenn Sie an der Unterseite des Tisches und du bist schon einige Zellen zugeordnet 839 00:45:09,000 --> 00:45:12,000 an der Spitze der Tabelle, die Sie wirklich nicht zu jeder Zeit bald brauchen 840 00:45:12,000 --> 00:45:15,000 Ich werde Ihnen eine von denen zurück, anstatt einen neuen, 841 00:45:15,000 --> 00:45:17,000 und so ist dies eine schöne Leistung Sorge. 842 00:45:17,000 --> 00:45:21,000 Sie haben noch zu vergeben den Zellen selber. 843 00:45:21,000 --> 00:45:23,000 Das wird Ihnen wieder eine Zelle. 844 00:45:23,000 --> 00:45:25,000 Es wird zu euch zurückkehren eine Zelle Objekt. 845 00:45:25,000 --> 00:45:28,000 Sobald Sie die Zelle Objekt Zeug es tun kann. 846 00:45:28,000 --> 00:45:32,000 Sie können den Text der Zelle mit dieser Eigenschaft namens Beschriftung gesetzt. 847 00:45:32,000 --> 00:45:36,000 Sie können diesen Pfeil auf der rechten oder eine andere random stuff hinzufügen 848 00:45:36,000 --> 00:45:41,000 mit diesem anderen Eigenschaft namens accessoryType, und so weiter und so fort. 849 00:45:41,000 --> 00:45:46,000 >> Werfen wir einen Blick auf die tatsächliche Umsetzung einer Tabellenansicht jetzt. 850 00:45:46,000 --> 00:45:49,000 Als ich dieses Projekt erstellt 851 00:45:49,000 --> 00:45:53,000 anstatt zu sagen einzigen Ansicht Anwendung Ich kam eigentlich hier 852 00:45:53,000 --> 00:45:57,000 zum Master-Detail-Anwendung, und so im Grunde entspricht dies der Mail-App 853 00:45:57,000 --> 00:46:01,000 auf dem iPad mit der Tabelle auf der linken Seite und dann den Inhalt auf der rechten Seite. 854 00:46:01,000 --> 00:46:07,000 Auf dem iPod oder iPhone, das wird zu einer einzigen Tabelle Ansicht entsprechen. 855 00:46:07,000 --> 00:46:10,000 Das ist, wo ich meine Starter-Code bekommen. 856 00:46:10,000 --> 00:46:13,000 >> Werfen wir zunächst einen Blick auf das Storyboard. 857 00:46:13,000 --> 00:46:15,000 All dies wurde für mich getan, im Grunde geschaffen. 858 00:46:15,000 --> 00:46:18,000 Diese Navigationsleiste zeigte mir, was ein Beispiel Zelle aussehen könnte, 859 00:46:18,000 --> 00:46:22,000 und ich kann doppelklicken Sie diese, den Titel ändern. 860 00:46:22,000 --> 00:46:25,000 Alle anderen UI Bedenken, die ich verarbeiten kann es. 861 00:46:25,000 --> 00:46:27,000 Die Header-Datei sieht wirklich einfach. 862 00:46:27,000 --> 00:46:30,000 Anstatt zu sagen, dies ist UIViewController wir jetzt sagen, dies ist ein 863 00:46:30,000 --> 00:46:35,000 TableViewController, so dass wir wissen, dass wir all diese Tabelle Methoden aufrufen wollen. 864 00:46:35,000 --> 00:46:38,000 Weiter möchte ich eine Immobilie, die gehen zu vertreten hat erstellen 865 00:46:38,000 --> 00:46:40,000 die Dinge in meinem Tisch. 866 00:46:40,000 --> 00:46:43,000 Diese Tabelle wird willkürlich angezeigt 867 00:46:43,000 --> 00:46:46,000 eine Liste der Früchte, und so brauche ich, um etwas Array erstellen 868 00:46:46,000 --> 00:46:49,000 in denen ich einfügen können Früchte. 869 00:46:49,000 --> 00:46:52,000 Innerhalb von meiner Implementierung-Datei das erste, was ich tun möchte, 870 00:46:52,000 --> 00:46:55,000 ist, möchte ich sicherstellen, dass ich zu initialisieren dieses Array. 871 00:46:55,000 --> 00:46:58,000 >> Ich sagte alloc init schuf mein Obst-Array, 872 00:46:58,000 --> 00:47:03,000 und ich bin der Zugabe von 4 Dingen zu, von denen viel mehr umstritten als die anderen 3 ist. 873 00:47:03,000 --> 00:47:06,000 Und jetzt habe ich ein Array der Größe 4. 874 00:47:06,000 --> 00:47:08,000 Wir schütteln es in CS50. 875 00:47:08,000 --> 00:47:11,000 Ich habe jetzt ein Array der Größe 4. 876 00:47:11,000 --> 00:47:13,000 Jetzt werde ich zu starten Beantwortung dieser Fragen, und tatsächlich, 877 00:47:13,000 --> 00:47:16,000 wenn ich diese app erstellt all dies wurde bereits für mich getan. 878 00:47:16,000 --> 00:47:19,000 Ich hatte nicht zu tippen die Anzahl der Abschnitte in der Tabellenansicht. 879 00:47:19,000 --> 00:47:22,000 Es war schon da, und ich bin in die Lücken füllen. 880 00:47:22,000 --> 00:47:24,000 Wie viele Abschnitte habe ich? 881 00:47:24,000 --> 00:47:26,000 One. Alles erledigt. 882 00:47:26,000 --> 00:47:28,000 Wie viele Zeilen habe ich? 883 00:47:28,000 --> 00:47:31,000 Nun, ich eine Zeile für jede Frucht haben, so dass diese Anzahl 884 00:47:31,000 --> 00:47:34,000 ist eine Eigenschaft von jedem Array, wie groß ist sie sagt? 885 00:47:34,000 --> 00:47:36,000 Das ist, wie viele Zeilen die ich habe. 886 00:47:36,000 --> 00:47:42,000 Schließlich muss ich sagen, was nicht jede Zelle aussehen? 887 00:47:42,000 --> 00:47:46,000 Ich werde dequeueReusableCellWithIdentifier sagen. 888 00:47:46,000 --> 00:47:48,000 >> Wiederum wurde dies bereits für mich geschrieben. 889 00:47:48,000 --> 00:47:51,000 Ich habe nicht zu tun haben, dies selbst, und ich möchte, um wieder 890 00:47:51,000 --> 00:47:54,000 diese Zelle an dieser Stelle. 891 00:47:54,000 --> 00:47:57,000 Beachten Sie, dass nennen wir die gleiche Methode auf jeder einzelnen Zelle, 892 00:47:57,000 --> 00:48:01,000 und dieses Argument hier, diese indexPath Argument, 893 00:48:01,000 --> 00:48:03,000 sagt, was Reihe I in. bin 894 00:48:03,000 --> 00:48:05,000 Wenn ich sage indexPath.row hier unten 895 00:48:05,000 --> 00:48:09,000 dies wird 0 sein, dann wird 1 sein, dann wird 2 sein, und dies ist daher weiß ich 896 00:48:09,000 --> 00:48:11,000 welche Zelle Ich bin derzeit angezeigt. 897 00:48:11,000 --> 00:48:15,000 Ich möchte den Text der Zelle unter Verwendung dieses textLabel Eigenschaft 898 00:48:15,000 --> 00:48:19,000 nach innen meine Früchte Array gehen und 899 00:48:19,000 --> 00:48:21,000 das Objekt entsprechend jeder Zeile. 900 00:48:21,000 --> 00:48:24,000 Wenn dies ein String ist, bin ich jetzt die Einstellung 901 00:48:24,000 --> 00:48:28,000 der Text-Eigenschaft auf eine Zeichenfolge. 902 00:48:28,000 --> 00:48:30,000 Ich kann eine andere Sache. 903 00:48:30,000 --> 00:48:32,000 Ich kann auch registrieren Sie einen Event-Handler für jede der Zellen, 904 00:48:32,000 --> 00:48:35,000 so, wenn ich tippen jede dieser Zellen 905 00:48:35,000 --> 00:48:39,000 Diese didSelectRowAtIndexPath, das wird für mich angerufen werden, 906 00:48:39,000 --> 00:48:42,000 so einfach durch die Definition dieses Ich kann nun, was passiert, 907 00:48:42,000 --> 00:48:46,000 wenn Sie eine Zelle tippen, und wieder übergeben wir in der Zelle wurde abgehört 908 00:48:46,000 --> 00:48:50,000 so dass wir wiederverwenden können diese gleichen Event-Handler für alle unsere Zellen. 909 00:48:50,000 --> 00:48:53,000 >> Auch dies ist etwas, iOS für mich tut. 910 00:48:53,000 --> 00:48:55,000 Lasst uns zeigen andere lästige Popup 911 00:48:55,000 --> 00:48:59,000 das einfach sagt, man nahm etwas, wo, dass etwas 912 00:48:59,000 --> 00:49:04,000 wird die Zeile Objekt. 913 00:49:04,000 --> 00:49:10,000 Als ich dies ausführen, werde ich diese schönen Tisch Blick haben 914 00:49:10,000 --> 00:49:14,000 mit einer Zeile für jedes dieser Frucht, und wenn ich tippen ein 915 00:49:14,000 --> 00:49:16,000 es sagt mir, was passiert ist. 916 00:49:16,000 --> 00:49:21,000 Sinn? 917 00:49:21,000 --> 00:49:24,000 Wir bauen ein bisschen komplizierter einer App, 918 00:49:24,000 --> 00:49:28,000 so viel wie Sie Ihnen abgeholt Tomate ist. 919 00:49:28,000 --> 00:49:31,000 Das schöne Teil über die Storyboards 920 00:49:31,000 --> 00:49:35,000 ist es nicht nur geht, um uns design Bildschirmen individuell helfen, 921 00:49:35,000 --> 00:49:38,000 es ist auch uns helfen zusammen binden unsere gesamte App, 922 00:49:38,000 --> 00:49:42,000 so dass die endgültige app wir Gebäude sein müssen, ist dieses schöne Sport-News-Reader, 923 00:49:42,000 --> 00:49:45,000 und so es geht um mehrere Bildschirme haben, und so kann ich tatsächlich repräsentieren 924 00:49:45,000 --> 00:49:48,000 jeder dieser mehrere Bildschirme auf dem Storyboard 925 00:49:48,000 --> 00:49:52,000 und ich kann verkleinert und sehe meine app von einem hohen Niveau. 926 00:49:52,000 --> 00:49:55,000 >> Um ein neues Element innerhalb meines Storyboard 927 00:49:55,000 --> 00:49:59,000 Es ist wirklich einfach Innenseite Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Wenn ich zu einem anderen Bildschirm, um diese hinzufügen wollen, zum Beispiel, 929 00:50:01,000 --> 00:50:06,000 Ich kann erste Verkleinern mit dem Pinch-Zoom, dass Apple so sehr liebt, 930 00:50:06,000 --> 00:50:09,000 und hier unten, bevor ich für eine Schaltfläche suchen 931 00:50:09,000 --> 00:50:12,000 und ich per Drag & Drop auf eine Schaltfläche 932 00:50:12,000 --> 00:50:15,000 wenn ich einen neuen Bildschirm erstellen wollen, kann ich eigentlich nur per Drag & Drop 933 00:50:15,000 --> 00:50:19,000 eine ganze View-Controller, so dass, wenn ich das nehmen, ziehen Sie es hier rüber, 934 00:50:19,000 --> 00:50:23,000 hey, es gibt einen anderen Bildschirm, und jetzt mit dem gleichen Storyboard-Datei 935 00:50:23,000 --> 00:50:26,000 Ich kann allen Bildschirmen innerhalb meiner app, und ich kann Verkleinern 936 00:50:26,000 --> 00:50:28,000 und sehen, wie sie interagieren. 937 00:50:28,000 --> 00:50:32,000 Diese werden noch zu interagieren. 938 00:50:32,000 --> 00:50:36,000 Die Art und Weise, in der diese 2 Bildschirme zu interagieren definieren Sie Beziehungen. 939 00:50:36,000 --> 00:50:39,000 Grundsätzlich können Sie sagen, dieses Fenster, wenn Sie diese Taste drücken, 940 00:50:39,000 --> 00:50:42,000 Ich möchte Sie zu gleiten, um dieser neuen Bildschirm. 941 00:50:42,000 --> 00:50:44,000 Das heißt, es ist diese Art von Beziehung zwischen 942 00:50:44,000 --> 00:50:46,000  der erste Bildschirm und der zweite Bildschirm. 943 00:50:46,000 --> 00:50:49,000 Sie haben grundsätzlich einen Pfeil von dieser Schaltfläche zum zweiten Bildschirm 944 00:50:49,000 --> 00:50:53,000 sagen, dass, wenn Sie diese Taste drücken, das, wo ich hin will ist. 945 00:50:53,000 --> 00:50:57,000 Genau wie wir die Kontrolle angeklickt und gezogen, um diese Filialen definieren 946 00:50:57,000 --> 00:51:01,000 wir werden das gleiche tun, um diese segues definieren. 947 00:51:01,000 --> 00:51:05,000 >> Wir werden ein Beispiel dafür zu sehen, und bevor wir tatsächlich Übergang 948 00:51:05,000 --> 00:51:08,000 von einem Bildschirm zum anderen iOS ist schön genug, um diese Methode aufrufen 949 00:51:08,000 --> 00:51:11,000 genannt prepareForSegue, und das ist, wo wir beginnen können 950 00:51:11,000 --> 00:51:14,000 Senden von Daten von einer Anwendung zur anderen. 951 00:51:14,000 --> 00:51:17,000 Im Beispiel sind dabei, es zu betrachten wird grundsätzlich erlauben uns 952 00:51:17,000 --> 00:51:20,000 Baseball-Teams von Ligen und Divisionen filtern. 953 00:51:20,000 --> 00:51:23,000 Wenn ich eine Liga auswählen, zum Beispiel, ich will den Übergang 954 00:51:23,000 --> 00:51:25,000 zu meinem nächsten Bildschirm, wo ich alle Abteilungen angezeigt werden können 955 00:51:25,000 --> 00:51:27,000 in dieser Liga oder den verschiedenen Teams. 956 00:51:27,000 --> 00:51:31,000 Ich brauche, um zu diesem Bildschirm, was Teams sollten anzuzeigen senden. 957 00:51:31,000 --> 00:51:35,000 Um dies zu tun, dass ich gehe, um die Vorteile dieser Methode nehmen Sie hier. 958 00:51:35,000 --> 00:51:39,000 >> Schließlich, nur ein zufälliger Punkt auf iOS. 959 00:51:39,000 --> 00:51:41,000 Wenn Sie die Daten speichern wollen gibt es dieses Ding namens Kerndaten, 960 00:51:41,000 --> 00:51:44,000 das ist eigentlich ganz kompliziert zu arbeiten. 961 00:51:44,000 --> 00:51:47,000 Sie können auch SQL verwenden, um Daten zu speichern, 962 00:51:47,000 --> 00:51:51,000 die wiederum ist schön, aber irgendwie auf der komplizierteren Seite zu arbeiten, 963 00:51:51,000 --> 00:51:55,000 aber iOS unterstützt auch diese wirklich coole Dinge genannt Property-Listen, 964 00:51:55,000 --> 00:52:00,000 und eine Eigenschaft Liste ist nur eine Datei, die Schlüssel-Wert-Paaren darstellt. 965 00:52:00,000 --> 00:52:03,000 Sie definieren eine Liste von Schlüsseln, und Sie sagen, diese Taste wird ein Array sein. 966 00:52:03,000 --> 00:52:06,000 Dieser Schlüssel wird ein String sein, und im Grunde alles, was Sie tun können 967 00:52:06,000 --> 00:52:10,000 in JSON kann man im Inneren zu tun einer Immobilie Liste 968 00:52:10,000 --> 00:52:14,000 so dass diese wirklich schön ermöglicht es uns, mit einigen Daten zu arbeiten. 969 00:52:14,000 --> 00:52:18,000 Zum Beispiel habe ich diese Teams.plist die ich schuf. 970 00:52:18,000 --> 00:52:22,000 Ich habe eine neue plist-Datei, und ich kann Drilldown. 971 00:52:22,000 --> 00:52:26,000 Dies ist ein Wörterbuch, das ein Wörterbuch ist, sind diese Saiten, 972 00:52:26,000 --> 00:52:30,000 und so ist dies eine schöne grafische Darstellung eines JSON-Dokument 973 00:52:30,000 --> 00:52:33,000 oder einfach nur eine Reihe von Schlüssel-Wert-Paaren, 974 00:52:33,000 --> 00:52:37,000 und so ist dies die Daten, dass ich mit Innenseite meiner App zu arbeiten. 975 00:52:37,000 --> 00:52:40,000 >> Lassen Sie uns zuerst hierher kommen. Wir haben viel mehr Dateien jetzt. 976 00:52:40,000 --> 00:52:44,000 Aber lassen Sie uns zuerst hierher kommen, um das Storyboard. 977 00:52:44,000 --> 00:52:48,000 Das Storyboard hier-wenn ich Verkleinern- 978 00:52:48,000 --> 00:52:51,000 können wir nun sehen, dass dies der Fluss meiner app ist. 979 00:52:51,000 --> 00:52:53,000 Ich bin zuerst zu auf diesem Bildschirm starten. 980 00:52:53,000 --> 00:52:55,000 Ich werde um einen Drilldown auf diesem Bildschirm 981 00:52:55,000 --> 00:52:58,000 und ich werde um einen Drilldown auf diesem Bildschirm, und wir können sehen, dass, wenn ich Art von 982 00:52:58,000 --> 00:53:04,000 Bewegen eines davon rund wir haben diese Pfeile von hier bis hier geht, 983 00:53:04,000 --> 00:53:08,000 und die Art, wie ich definieren, dass Pfeil war, wenn ich zoomen ein wenig, 984 00:53:08,000 --> 00:53:12,000 und wenn ich über diese View-Controller, 985 00:53:12,000 --> 00:53:16,000 und hier ist eine Zelle, und ich möchte sagen, dass wenn Sie eine Zelle tippen 986 00:53:16,000 --> 00:53:18,000 Ich möchte Sie zu gleiten zu einem anderen Bildschirm. 987 00:53:18,000 --> 00:53:21,000 Ich kann einfach mit gedrückter Steuerung, 988 00:53:21,000 --> 00:53:26,000 scrollen Sie über ein wenig, halten Sie Kontrolle, ziehen Sie diese Zelle über und loslassen. 989 00:53:26,000 --> 00:53:30,000 >> Und hier sagen wir, was ist der Übergang, den Sie verwenden möchten? 990 00:53:30,000 --> 00:53:32,000 Wollen Sie diese Folie, was als Push ist zu verwenden? 991 00:53:32,000 --> 00:53:34,000 Wollen Sie schieben von unten nach oben? 992 00:53:34,000 --> 00:53:36,000 Das nennt man modal. 993 00:53:36,000 --> 00:53:40,000 Und wenn ich auf eine von ihnen, es geht um diesen Pfeil für mich zu ziehen, 994 00:53:40,000 --> 00:53:44,000 und das bedeutet, dass ich tatsächlich gehandhabt, was passiert, wenn ich diesen Knopf grafisch drücken. 995 00:53:44,000 --> 00:53:48,000 Ich habe keinen Code schreiben, um tatsächlich von einem Bildschirm zum nächsten gleiten. 996 00:53:48,000 --> 00:53:51,000 I definiert dies visuell Innenseite Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Wenn ich auf diesen Pfeil, können wir sehen, dass ich dieses Ding einen Namen gab. 998 00:53:55,000 --> 00:53:59,000 Ich nannte es showDivisions, und dies ist, so dass ich weiß, 999 00:53:59,000 --> 00:54:03,000 Welche Übergang bevorsteht, und wir werden sehen, warum in nur einer Sekunde. 1000 00:54:03,000 --> 00:54:06,000 Das ist, wie ich bis die verschiedenen Bildschirme in meiner App verdrahtet. 1001 00:54:06,000 --> 00:54:09,000 Wäre dies ein Knopf, zum Beispiel, anstatt eine Tabellenansicht, 1002 00:54:09,000 --> 00:54:11,000 Ich konnte steuern auf den Button klicken, ziehen Sie auf den nächsten Bildschirm 1003 00:54:11,000 --> 00:54:16,000 und das ist, wie ich die Navigation auf diese Weise zu tun. 1004 00:54:16,000 --> 00:54:19,000 >> Sehr schnell, wenn wir kommen ins MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 wieder, wir einfach gehen, um eine Liste der Dinge zu definieren 1006 00:54:22,000 --> 00:54:26,000 Das wird in der Tabelle angezeigt werden. 1007 00:54:26,000 --> 00:54:29,000 Hier bin ich, dass ich möchte, dass du diese plist Datei zu nehmen, 1008 00:54:29,000 --> 00:54:32,000 und ich möchte, dass du es zu laden in einem Wörterbuch, 1009 00:54:32,000 --> 00:54:35,000 und wenn man diesem Wörterbuch haben, werde ich die gleichen Fragen erneut beantworten. 1010 00:54:35,000 --> 00:54:37,000 Hier ist die Anzahl von Abschnitten. 1011 00:54:37,000 --> 00:54:41,000 One, gibt es eine Zeile für jede Liga, und der Text jeder Zelle 1012 00:54:41,000 --> 00:54:46,000 sollte entweder die erste, die erste Liga, die zweite Liga, und so weiter. 1013 00:54:46,000 --> 00:54:51,000 Schließlich werde ich diese Methode, dass wir gerade gesehen haben als prepareForSegue verwenden, 1014 00:54:51,000 --> 00:54:54,000 und dies ist die Methode, werde gefeuert ist, wenn ich auf 1015 00:54:54,000 --> 00:54:57,000 an einem dieser Reihen und somit diesen Übergang Aktivierung 1016 00:54:57,000 --> 00:54:59,000 , dass ich mit den Pfeilen. 1017 00:54:59,000 --> 00:55:02,000 Dies wird sagen, dass ich kann über mehrere 1018 00:55:02,000 --> 00:55:05,000 Beziehungen von einem Bildschirm zum anderen. 1019 00:55:05,000 --> 00:55:08,000 Wenn ich 2 Tasten und jede Taste gelangen Sie zu einem anderen Bildschirm 1020 00:55:08,000 --> 00:55:10,000 Ich werde 2 segues, 1 für jede Taste haben. 1021 00:55:10,000 --> 00:55:14,000 Aber diese prepareForSegue ist wiederum würde wiederverwendet werden 1022 00:55:14,000 --> 00:55:17,000 für jede der verschiedenen Beziehungen, eine Einrichtung, so daß, dass ich eine Möglichkeit brauchen 1023 00:55:17,000 --> 00:55:21,000 zu identifizieren, wenn Sie die erste Taste drücken oder drücken Sie die zweite Taste. 1024 00:55:21,000 --> 00:55:25,000 >> Erinnern, wann ich, dass segue einen Namen gab, diese showDivisions, 1025 00:55:25,000 --> 00:55:29,000 das ist, wie ich jetzt weiß, dass dies die segue, die aktiviert wurde ist. 1026 00:55:29,000 --> 00:55:32,000 Alles, was ich tun möchte, ist, ich möchte sagen, 1027 00:55:32,000 --> 00:55:35,000 Ich möchte herausfinden, was ich gerade getroffen, 1028 00:55:35,000 --> 00:55:38,000 und so dazu kommen, kann ich sagen, ich will die indexPath für die ausgewählte Zeile, 1029 00:55:38,000 --> 00:55:42,000 erinnere mich an die indexPath sagt nur, wo ich geklickt nur, 1030 00:55:42,000 --> 00:55:47,000 und dann will ich sagen, ich möchte, um herauszufinden, wohin ich gehe. 1031 00:55:47,000 --> 00:55:50,000 Diese destinationViewController, das ist eine Eigenschaft des segue. 1032 00:55:50,000 --> 00:55:53,000 Das ist der Bildschirm ich gehe, 1033 00:55:53,000 --> 00:55:56,000 so weiß ich, dass der Bildschirm ich gehe genannt wird DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 weil ich erstellt diese Klasse, 1035 00:55:59,000 --> 00:56:02,000 und so jetzt, wenn ich sage d.divisions 1036 00:56:02,000 --> 00:56:06,000 Ich bin jetzt eine Eigenschaft des View-Controllers Ich bin zu gehen. 1037 00:56:06,000 --> 00:56:10,000 Dies ist, wie ich das Senden von Daten von einem Bildschirm zu einem anderen Bildschirm. 1038 00:56:10,000 --> 00:56:13,000 >> Einfach mal bei dieser DivisionsViewController 1039 00:56:13,000 --> 00:56:16,000 Sie können hier sehen, dass in der. h-Datei 1040 00:56:16,000 --> 00:56:20,000 es ist, dass die Immobilie Divisionen, und das ist, was ich bin im Grunde bevölkern, 1041 00:56:20,000 --> 00:56:25,000 so das ist, wie ich weiß, dass ich die Anzeige der Divisionen entspricht 1042 00:56:25,000 --> 00:56:28,000 die Liga, dass ich angeklickt und wieder, 1043 00:56:28,000 --> 00:56:31,000 Die eigentliche Tabelle Ansicht sieht so ziemlich das gleiche, nur die Beantwortung die 1044 00:56:31,000 --> 00:56:34,000 3 einfache Fragen sowie die Identifizierung 1045 00:56:34,000 --> 00:56:37,000 was passiert, wenn Sie zum nächsten Bildschirm zu bewegen. 1046 00:56:37,000 --> 00:56:40,000 Nur ein paar andere Dinge hier. 1047 00:56:40,000 --> 00:56:43,000 Man merkt an der Spitze hier, dass anstatt zu sagen # include 1048 00:56:43,000 --> 00:56:45,000 Ich jetzt sage # importieren. 1049 00:56:45,000 --> 00:56:47,000 Dies ist nur ein Objective-C Ding. 1050 00:56:47,000 --> 00:56:52,000 Der Import ist im Grunde eine schönere Version von include, 1051 00:56:52,000 --> 00:56:57,000 und zum Beispiel, müssen wir wissen, was diese Klasse ist, 1052 00:56:57,000 --> 00:57:00,000 so kann ich nicht einfach sagen DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Wenn wir nicht hashtag standardio.c innerhalb unserer. C-Datei 1054 00:57:05,000 --> 00:57:07,000 der Compiler hatte keine Ahnung, was printf war. 1055 00:57:07,000 --> 00:57:12,000 Ebenso, wenn ich nicht importieren DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 Der Compiler hat wirklich keine Ahnung, was ein DivisionsViewController ist. 1057 00:57:16,000 --> 00:57:19,000 So stellen Sie sicher, dass im Inneren Ihres anders. M Dateien, die Sie sicher, dass Sie importieren zu machen 1058 00:57:19,000 --> 00:57:25,000 die entsprechenden. h-Dateien, so dass der Compiler weiß, was los ist. 1059 00:57:25,000 --> 00:57:31,000 >> Schließlich, was Apple letztlich nicht wird zeigen einige Daten über eine Web-Ansicht, 1060 00:57:31,000 --> 00:57:35,000 und so eine Web-Ansicht ist ein Objekt, in dem Sie einbinden 1061 00:57:35,000 --> 00:57:37,000 ein kleines Web-Browser innerhalb Ihrer Anwendung. 1062 00:57:37,000 --> 00:57:40,000 Alles, was Sie tun müssen, ist eine URL, um Ihren Webbrowser zu liefern, 1063 00:57:40,000 --> 00:57:43,000 so möchte ich auf mlb.mlb.com gehen, 1064 00:57:43,000 --> 00:57:46,000 und dies ist, wie kann ich die Homepage für jedes Team zugreifen, 1065 00:57:46,000 --> 00:57:49,000 und so, indem in dieser URL 1066 00:57:49,000 --> 00:57:52,000 die Web-Ansicht kann das für mich anzuzeigen, und ich kann um zu sehen, 1067 00:57:52,000 --> 00:58:01,000 und Simulator in Betrieb ist durch diese ein. 1068 00:58:01,000 --> 00:58:03,000 Nun kam von meinem plist. 1069 00:58:03,000 --> 00:58:07,000 Wenn ich das auf diese kamen auch aus meiner plist, und dies Gleit behandelt wurde 1070 00:58:07,000 --> 00:58:09,000 durch die Definition dieser segues. 1071 00:58:09,000 --> 00:58:12,000 Ich klicke auf diese und eine weitere, 1072 00:58:12,000 --> 00:58:15,000 und jetzt hier ist meine UIWebView, so wie, dass 1073 00:58:15,000 --> 00:58:19,000 hier ist die Website für die URL, dass ich nur eingebettet, 1074 00:58:19,000 --> 00:58:21,000 und ich habe nichts zu verrückt zu behandeln. 1075 00:58:21,000 --> 00:58:24,000 Dies ist, wie eine Web-Seite anzuzeigen. 1076 00:58:24,000 --> 00:58:27,000 Dinge wie diese Back-Button sind auch hier die mir gegeben 1077 00:58:27,000 --> 00:58:33,000 völlig kostenlos, weil ich diese Beziehungen mit segues definiert. 1078 00:58:33,000 --> 00:58:37,000 >> Haben Sie Fragen? Yeah. 1079 00:58:37,000 --> 00:58:40,000 [Student] Also, wenn Sie alloc verwenden, die Sie nie auf freie alles haben? 1080 00:58:40,000 --> 00:58:43,000 Genau, wenn Sie alloc und init rufen Sie nicht, um es zu befreien. 1081 00:58:43,000 --> 00:58:46,000 IOS wird all das für Sie erledigen. 1082 00:58:46,000 --> 00:58:51,000 Es ist wunderbar, und du bist nicht brechen alle Regeln. Yeah. 1083 00:58:51,000 --> 00:58:54,000 [Student] Würde man mehr Teams, die auf den Bildschirm passen könnte, 1084 00:58:54,000 --> 00:58:58,000 würde es automatisch mit einem Scroll-Option, oder ist das etwas, was Sie brauchen, um hinzuzufügen? 1085 00:58:58,000 --> 00:59:01,000 Genau, wenn ich mehr Mannschaften hatten, zum Beispiel, würde es automatisch verarbeiten 1086 00:59:01,000 --> 00:59:04,000 das Scrollen für mich und all die Leistung betrifft 1087 00:59:04,000 --> 00:59:08,000 mit dem riesigen Tisch sind auch total für mich behandelt. 1088 00:59:08,000 --> 00:59:11,000 >> Weitere Fragen? 1089 00:59:11,000 --> 00:59:13,000 Der gesamte Code wird veröffentlicht. 1090 00:59:13,000 --> 00:59:16,000 Wir Art über ein wenig der mehr Kleinigkeiten beschönigt, 1091 00:59:16,000 --> 00:59:19,000 aber Dinge wie die Einstellung einiger Eigenschaften der Web-Ansicht 1092 00:59:19,000 --> 00:59:22,000 sind nur Dinge, die Sie, indem Sie Apples Dokumentation erhalten können, 1093 00:59:22,000 --> 00:59:24,000 das ist wirklich sehr, sehr schön angelegt. 1094 00:59:24,000 --> 00:59:27,000 Sie haben eine Menge der Probe Apps und beispielsweise Nutzungen 1095 00:59:27,000 --> 00:59:34,000 verschiedene APIs, also auf jeden Fall durchlesen denen, wenn du kannst. 1096 00:59:34,000 --> 00:59:36,000 Nur ein paar hilfreiche Links möchten Sie vielleicht einen Blick auf zu nehmen. 1097 00:59:36,000 --> 00:59:38,000 Dies sind einige nützliche Dokumentation Führer. 1098 00:59:38,000 --> 00:59:41,000 Die URLs sind massiv, so dass sie verkürzt. 1099 00:59:41,000 --> 00:59:44,000 Das erste ist die gesamte Bibliothek der Dokumentation. 1100 00:59:44,000 --> 00:59:46,000 Es gibt wenig Suchleisten, also, wenn Sie mit der Eingabe-Taste starten 1101 00:59:46,000 --> 00:59:50,000 wird es anfangen, Ihnen alle Informationen, die über all die Dinge, die Sie mit einer Taste zu tun. 1102 00:59:50,000 --> 00:59:53,000 Ich habe auch die Table View Programming Guide enthalten. 1103 00:59:53,000 --> 00:59:56,000 Es behandelt Tabellenansichten in viel mehr ins Detail, 1104 00:59:56,000 --> 01:00:00,000 wie man Dinge tun, wie dynamisch Zellen hinzufügen oder bearbeiten Zellen oder entfernen. 1105 01:00:00,000 --> 01:00:02,000 >> Es gibt viel der Probe apps von Apple, die Ihnen zeigen, wie Sie das tun, 1106 01:00:02,000 --> 01:00:05,000 und schließlich ist diese letzte die Human Interface Guidelines, 1107 01:00:05,000 --> 01:00:09,000 und dies ist im Grunde einige Diskussionen über UI-Komponenten, 1108 01:00:09,000 --> 01:00:12,000 Dinge wie nicht machen eine Schaltfläche, die 4 Pixel um 4 Pixel ist. 1109 01:00:12,000 --> 01:00:15,000 Das ist eine schlechte Idee, und andere Dinge, die Apple Ihnen tun will 1110 01:00:15,000 --> 01:00:18,000 für gutes Design zu fördern. 1111 01:00:18,000 --> 01:00:23,000 >> Irgendwelche letzten Fragen, bevor wir landen? 1112 01:00:23,000 --> 01:00:27,000 Alles klar, auf jeden Fall fühlen Sie sich frei, um-wir gehen auf spezielle Etiketten auf zu diskutieren. 1113 01:00:27,000 --> 01:00:30,000 Wir werden ein iOS einen haben, also auf jeden Fall fühlen Sie sich frei, um das zu nutzen. 1114 01:00:30,000 --> 01:00:34,000 Wenn Sie mit Ihren Klassenkameraden an Projekten arbeiten 1115 01:00:34,000 --> 01:00:37,000 oder helfen herauszufinden, einige zufällige iOS Zeug 1116 01:00:37,000 --> 01:00:40,000 fühlen Sie sich frei, mich zu mailen, und definitiv durchzulesen den gesamten Code online, weil 1117 01:00:40,000 --> 01:00:43,000 nur im Interesse der Zeit, dass wir solche über die weitere beschönigt 1118 01:00:43,000 --> 01:00:45,000 feinere Details der Dinge. 1119 01:00:45,000 --> 01:00:47,000 Aber wenn nicht, dann viel Glück auf Ihrem iOS-Projekte, und ich hoffe, wir haben 1120 01:00:47,000 --> 01:00:53,000 ein großer Zustrom von Apps im App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]