[Powered by Google Translate] [Seminar] [iOS: Schreiben Apps Like a Boss] [Tommy MacWilliam] [Harvard University] [Dies ist CS50.] [CS50.TV] Alles klar, alle, willkommen auf iOS: Schreiben Apps wie ein Boss. Dieses Seminar wird sich auf das Schreiben Apps für das iPhone konzentrieren und im Gegenzug schriftlich Apps für das iPad, und so sind wir im Grunde geht zu Fuß durch ein paar verschiedene Beispiele, wie man eine App zu machen, ein einfaches Spiel wie Tic Tac Toe, oder wenn Sie mehr daran interessiert, eine App wie eine Art Newsreader oder etwas, das mit dem Internet habe ich darüber auch sprechen wird interagiert. Hier ist unsere kurze Tagesordnung. IOS apps sind in einer Sprache namens Objective-C geschrieben, und so ist dies ein bisschen ähnlich wie C, aber nicht wirklich überhaupt, so werden wir reden ein wenig über die Sprache selbst und dann, wie iPhone-Apps mit diesem app Programm namens XCode zu bauen, die, wenn man es nicht noch nicht heruntergeladen haben zögern Sie nicht, um den Download jetzt zu beginnen. Es ist mehrere Gigabyte. Es sollte kostenlos im App Store, so müssen Sie einen Mac haben idealerweise mit der neuesten Version von OS X. Wenn Sie nicht sind, kein Problem. Wir haben Macs im Science Center für Ihren Einsatz mit XCode installiert, und so fühlen sich frei, um die für die Entwicklung verwenden. Wenn Sie eine App machen wollen, aber keinen Mac, keine Sorge. Es gibt viel des Campus Ressourcen dafür. Und so ist, dann werden wir 2 größere Beispiele für verschiedene Anwendungen können Sie decken. Objective-C ist technisch eine so genannte Super-Set von C. Das bedeutet, dass jede C-Code auch gültig ist Objective-C-Code. Das bedeutet, dass wir irgendwie Kanal auf einige zusätzliche Funktionen C. abgeklebt Einige dieser Features sind nicht mit immer schreiben malloc wieder, Gott sei Dank, nicht zu müssen, um diese dummen Zeiger Sorgen und befreit sie und all das Zeug Sie hasste C, und es ist irgendwie verschwunden in Objective-C. Jetzt, Objective-C hat auch eine viel größere Standard-Bibliothek, so gibt es eine Menge mehr Funktionen erhalten Sie kostenlos innerhalb von Objective-C. Erinnern, wenn wir schreiben würden PHP bemerkten wir, dass wir aus ging diese kleinste Sprache der riesigen Bibliothek von all diesen verrückten Dinge, die Sie tun können. Das gleiche passiert in iOS. Es gibt Objekte für Dinge wie die buddhistischen Kalender, und wirklich nichts Sie können möglicherweise von wahrscheinlich existiert bereits in Objective-C-Implementierung zu denken. Das Ziel Teil der Objective-C verweist etwas namens Object-Oriented Programming. Dies ist eine Art ein neues Konzept, aber wir haben eigentlich vor allem gelernt, eine Menge von diesen Konzepten bereits. Die Idee hinter Object-Oriented Programming ist, dass du gehst zu strukturieren eine Menge Code um diese Dinge als Klassen bezeichnet werden, und diese Klassen sind wirklich structs verherrlicht. Innerhalb eines struct wir im Grunde gesagt, hier ist eine Sache, und dieses Ding kann Mitglieder. Zum Beispiel könnte ein Knoten in einer verknüpften Liste haben anderes wie ein Wert ist, ein Zeiger auf den nächsten Knoten in der Liste, und gemeinsam, dass Zeiger und dass der Wert dieses eine Instanz eines struct zusammen. Die Klassen sind sehr ähnlich, außer Klassen können auch Funktionen innerhalb von ihnen. Wenn wir eine Struktur deklariert, könnten wir nur sagen, int n oder Knoten * next. Jetzt mit Objective-C können wir tatsächlich legte Funktionen innerhalb dieser Dinge. Eine andere Sache, dass Klassen tun können, ist, dass sie Daten aus anderen Klassen erben. Zum Beispiel werden wir eine Reihe von eingebauten Objective-C-Klassen suchen. Einer von ihnen könnte die Klasse, die den Blick für einen Bildschirm repräsentiert sein, und so mit den Worten möchte ich meine eigene Ansicht zu implementieren wir im Grunde sagen, jemand über bei Apple, wohl wirklich nette Leute, schrieb diese Klasse für mich, und es Griffe Dinge wie die Darstellung von Buttons oder Rendering auf den Bildschirm, und wir würden uns sehr schmerzt alle diese Funktionalität selbst zu implementieren und so durch einfaches Erben Daten können wir sagen, alles, was Sie in dieser Klasse hat Ich möchte auch innerhalb meiner Klasse, und dann werde ich einige andere Sachen zu tun, nämlich Umsetzung einer App. Das ist, was das Wort Vererbung bedeutet. Wir werden sehen, ein konkretes Beispiel. Und schließlich ist der Schlüssel, mit Object-Oriented Programming, dass es führt zu Datenkapselung. In einigen unserer Problems setzt könnten wir diese großen, globalen Variablen und globals überall, und das ist, wie würden wir den Überblick über Zustand zu halten. Mit Klassen können wir beginnen Verkapselung Informationen innerhalb eines Objekts. Wenn wir einen Bildschirm auf unserer App haben, wissen wir nicht wirklich brauchen, um alle Daten aus haben ein anderer Bildschirm in unsere App Inneren, dass und so durch Verkapselung Dinge innerhalb von Klassen dies tatsächlich führt viel besser Code-Design, und das ist mit einigen zusätzlichen Funktionen möglich von Objective-C. Vorwarnung, ist die Syntax für Objective-C Bananen. Es ist wie nichts, was wir zuvor gesehen haben, so ist es ein bisschen eine Lernkurve gewöhnungsbedürftig Was zum Teufel bedeutet das? Aber wenn man einmal Vergangenheit, die anfängliche Lernkurve es wirklich, wirklich glatt ist mit dem Schreiben beginnen apps. Um eine Klasse zu deklarieren, zu sagen, hier ist meine Klasse, es existiert, und vielleicht sind hier einige Dinge, die ich werde zu einem späteren Zeitpunkt zu definieren, Ich werde @ interface sagen. Ich werde @ interface sagen. Ich werde zu geben meiner Klasse einen Namen. Und dann später irgendwo werde ich @ end sagen, und alles, was zwischen dem @ interface und @ end wird meine Klasse sein. Das wird das sein, was drin ist unserer. H-Dateien. Genau wie in C unserem. H-Dateien im Grunde gesagt, hier sind einige Dinge, die existieren wird. Ich bin nicht unbedingt sagen, was sie noch tun, aber der Compiler muss wissen, dass sie existieren. Später im Inneren unseres. M-Dateien-da m für Objective-C wird, wo wir tatsächlich zu definieren, was diese Klassen zu tun. Ähnlich wie unsere. C Dateien, sofern wir eine Implementierung für Funktionen. Inside of our. M-Datei werden wir hier zu sagen ist, was alle Funktionen Innenseite meiner Klasse, was sie tun. Und schließlich, im Inneren einer Struktur konnten wir sagen im Inneren dieser geschweiften Klammern int n oder Knoten * next, und in Objective-C werden wir Benutze das Stichwort @ property, und dies ist, was los ist, um die Eigenschaften zu definieren, oder die nicht-Funktionen, die ein Teil meiner Klassen sind. Aufrufen von Funktionen in Objective-C ist auch Bananen. Wenn wir die Funktionen in C deklariert wir sagten so etwas wie int foo und offenen paren und dann gab es eine Liste von Argumenten. Dies ist, was erklärt Methoden oder Funktionen sieht wie in Objective-C. Wenn ich will, um eine Funktion oder eine Methode deklarieren , wo ich sage Methode ist wirklich nur eine Funktion, die ein Mitglied einer Klasse ist, so Art austauschbar, aber nicht wirklich, so Innenseite meiner Methode, die ich möchte eine neue Methode zu erstellen. Es wird nichts zurück, so, es wird vom Typ void sein. Dies ist der Rückgabetyp meiner Funktion. Jetzt haben wir parens hier, weil-ich weiß nicht. Weiter wird der Name meiner Funktion sein, und schließlich haben wir ein Semikolon wie wir in C. Was ist neu hier ist dieser Kerl hier. Dieser Bindestrich ist tatsächlich notwendig, und was dies sagt, ist, dass Diese Methode muss hier auf eine Instanz einer Klasse aufgerufen werden. Nachdem wir unsere Strukturen erklärten wir wahrscheinlich etwas gesagt wie struct node n, und dass tatsächlich erstellt oder instanziiert eine dieser Strukturen so, dass ich eigentlich könnte anfangen zu arbeiten mit dem, was drin ist es, so ist dies Strich bedeutet, dass wir uns zu haben die Klasse instanziieren genauso wie wir instanziiert, dass struct bevor wir diese Methode auf es nennen. Wenn ich möchte damit beginnen, Argumente für meine Methoden es kommt noch mehr Bananen. Hier ist meine Methode Namen. Dann werde ich einen Doppelpunkt und danach Doppelpunkt heißt es hier kommt einige Argumente. Diese Methode nimmt ein Argument. Der Typ des Arguments ist ein int, und der Name dieses Argument oder die Variable, die ich werde anfangen mit im Inneren des Verfahrens i genannt. Wieder ist dieses Verfahren. Es dauert ein Argument. Wenn Sie damit beginnen, mehr Argumente will wird es mehr Bananen dass wir dies Doppelpunkt, sagt hier kommt meine Liste von Argumenten. Das erste Argument ist ein Integer. Nun ist diese zweite Argument interessant. Die Variable, dass ich gehe nach innen werden mit meiner Funktion heißt f, so Innenseite meiner Funktion könnte ich sagen f + = 1 oder so etwas. Dieses Ding hier ist im Grunde ein Schlüssel für das Argument oder Parameter. So wie wir waren Schlüssel-Wert-Paare und so etwas wie JSON oder assoziative Arrays Objective-C die Entscheidung zu sagen, okay, gerade so, dass es wirklich klar ist, wenn Sie eine Methode aufrufen, was all diese Parameter sind Ich bin eigentlich los, um sie alle zu nennen. Wenn Sie eine Methode aufrufen, werden Sie tatsächlich sagen, andFloat, und dann passieren Sie es in. Interessanterweise ist diese ein nicht genannt, aber alle anderen Parameter sind, Wenn wir also einen dritten Argument musste ich könnte sagen, andFloat und ein weiterer Schwimmer und so weiter. Als ich diese Methoden aufrufen ist es natürlich Bananen, so, wenn ich ein Objekt, und ich definiert eine Methode namens foo, und ich möchte es nennen, anstatt zu sagen foo open / close parens Ich werde eine Klammer zu öffnen. Hier ist der Name meiner Methode. Ich werde die Halterung zu schließen, und das ist das Objekt, das ich nannte es auf mich. Denken Sie daran, existieren alle diese Methoden in Klassen da Klassen können Methoden innerhalb von ihnen definiert. Hier habe ich willkürlich ein Objekt von einigen Klasse erstellt, und dies ist die Syntax für das zu tun. Es gibt 2 Schritte zum Erstellen eines Objekts. Der erste Schritt ist zu sagen, ich will Speicherplatz zuzuweisen. Dies ist das Äquivalent eines malloc. Wir müssen nicht malloc mehr zu sagen. Wir ließen die m, machte es alloc, und ersetzt die. C mit. M. Nachdem wir alloc etwas, was wir dann brauchen, um es zu initialisieren. Grundsätzlich, wenn Sie Objekte erstellen möchten Sie vielleicht eine gewisse Logik haben, das führt, wenn sie erstellt sind, so können Sie in einigen Standardwerte übergeben oder so ähnlich, so dass diese Methode init ist, was tatsächlich das Objekt erstellt. Wir ersten Speicherplatz zuweisen, so wie wir in C hat, und dann werden wir initialisieren, die kann oder auch nicht eine ganze Menge. Dann werden wir wieder dieses Ding in einem Objekt o. Es ist ein Star hier, weil dies technisch ein Zeiger, aber keine Sorge, Zeiger sind nicht so eine große Sache in Objective-C nicht mehr. Jetzt haben wir diese Klasse namens NSObject instanziiert und das ist nur eine zufällige class dass Apple. Wir haben dies instanziiert, und jetzt habe ich eine Instanz dieser Klasse in diesem Objekt o, so dass bedeutet, dass, wenn ich definiert diese Methoden konnte ich sie so nennen. Ebenso, wenn ich eine Methode mit einem Argument nennen wollte, so ist dies die bar-Methode, das dauert ein Argument, und hier ist der baz: qux Methode, so geschieht dies 2 Argumente. Dies ruft eine Funktion auf dieses Objekt o. Sinn? Die Syntax sollte Sinn machen, aber Sie Art daran zu gewöhnen. Okay, lasst uns über ein paar Dinge, die in Objective-C gebaut werden sprechen Das waren nicht unbedingt in C gebaut In C wir irgendwie musste mit Zeichenfolgen als diese dummen Zeichen-Arrays umgehen, und es wurde wirklich ärgerlich. Objective-C hat die alle in für uns gebaut, und es ist eingebaut Verwendung dieser Klasse genannt NSString. Wenn ich ein NSString haben wir mehr arkane Syntax erstellen möchten. Anstatt zu sagen "CS50", sagen wir @ "CS50" und das ist nur die Syntax für die Deklaration von Strings in Objective-C. Dies ist äußerst einfach zu vergessen, so nicht. Jetzt, nachdem ich diese haben, dies ist ein String, aber feststellen, es ist wirklich nur ein Objekt. Ich sagte NSString, was bedeutet, ich instanziiert die Klasse als NSString, die jemand anders für mich geschrieben, und sie waren sehr nett, und so jetzt Ich anfangen kann das Aufrufen von Methoden auf sie. Wenn ich die Methode ausführlich über dieses Objekt s es wird zu mir zurückkehren die Länge des Strings. Das ist wie strlen in C. Dies würde wieder 4. Ebenso ist eine weitere Methode, die ich will zu kümmern könnte dies characterAtIndex. Dies ist eine Methode, die auf dieser string s, sagt Ich möchte, dass die 0. Charakter zu bekommen, und so wäre dies für mich das Zeichen c zurück, und es gibt eine ganze Reihe mehr von diesen Methoden, die Sie wirklich leicht googeln. Apples Dokumentation ist groß, und wir werden einen Blick auf, dass ein bisschen dauern. Those Are Strings. Wir haben auch variabler Größe Arrays gebaut in. Angemeldet in C, wenn wir ein Array deklariert mussten wir sagen, Sie haben 5 Elemente, Ende der Geschichte. Wenn wir Sie JavaScript und PHP haben wir beginnen konnten Dinge zu tun, wie das Hinzufügen oder sich bewegenden Elementen. Wir können das gleiche in Objective-C zu tun. Anstatt ein Array in der normalen C Weg haben wir wieder eine andere Klasse namens NSMutableArray. Es gibt auch NSArray, und das wird im Grunde kapseln einige Array. Das sagt das erste, was ich tun möchte, ist, möchte ich zu vergeben Platz für ein neues Array, und nachdem ich ordnen Sie Ich habe dann müssen sie zu initialisieren. Wieder nur den Aufruf dieser 2 Methoden. Nun bedeutet dies, dass innerhalb dieses Objekt eine Ich habe ein leeres Array sitzen. Wenn ich etwas zu diesem Array hinzufügen möchten, kann ich die addObject Methode. Ich möchte ein Objekt in dem Array eine hinzuzufügen, und ich möchte die Zeichenfolge CS50 hinzuzufügen. Wenn ich umgekehrt zu entfernen, dass ich sagen kann, wollte ich will entfernen Sie das Objekt an die erste Stelle auf dem Array oder Objekt ein. Sinn? Okay, Sie Art dieser eckigen Klammer etwas gewöhnen. By the way, innerhalb einer Menge von Apples Bibliotheken, die Sie sehen diese NS. Die NS steht tatsächlich für den nächsten Schritt, die man von Steve Jobs erste Unternehmen war, und das ist, wo er begann wirklich schriftlich eine Menge des Codes als eine Art Basis für Mac OS X und all die anderen Sachen, und so diese NS ist eine Art von diesem schönen Legacy zurufen einer der früheren Unternehmen zurück, wenn Apple wurde erstmals Anfang. Es ist überall. Werfen wir einen Blick auf eine ganzheitliche Objective-C Beispiel. Hier bin ich innerhalb XCode. Um dorthin zu gelangen, habe ich zunächst heruntergeladen XCode aus dem App Store, öffnete es, und dann ging ich hier, um die Datei, hier neue, und dann Projekt. Nach tun, dass ich all diese Möglichkeiten, was ich will zu schaffen haben, und so werden wir einen Blick auf diese Optionen später erfolgen, aber nur für dieses Beispiel, weil wir eigentlich nicht gehen, um eine App noch nicht haben, Ich kam hierher, und ich sagte Command Line Tool, und dies ist ein app, dass ich in der Befehlszeile ausführen wie wir von C. läuft Das ist, wie ich dieses Projekt erstellt, und jetzt bin ich hier, so lassen Sie uns zuerst einen Blick in diese Datei, und dies sollte hübsch aussehen vertraut. Ich habe einen int Namen. Es ist mein Freund argc, meine anderen Kumpel argv. Und so können wir sehen, dass dies der Ausgangspunkt für meine erste Objective-C-Anwendung ist. Hier können wir dies jetzt zu ignorieren. Dies ist im Grunde einige Speicher-Management Zeug, das wirst du nicht wirklich jemals zu befürchten. Lassen Sie uns an diesem ersten Block hier. Diese erste Zeile, wenn ich sage, Student * alice = [[Studenten alloc] init] was ist das denn? Diese erste Student hier, ist dies wahrscheinlich eine Klasse. Dies ist nicht eine Klasse, dass Apple schrieb, aber es ist eine Klasse, die ich geschrieben habe. Das erste, was ich tun möchte, ist, ich will um Platz für einen neuen Schüler zuweisen, und dann habe ich es initialisieren möchten, so gibt mir zurück Diese neue Student-Objekt, und ich bin die Speicherung dieser in einer Variable namens Alice. Wo haben die Klasse kommen? Nun, hier auf der linken Seite sind alle von den verschiedenen Dateien innerhalb meines Projektes. Wir können hier sehen, ich habe eine Student.h und Student.m. Das. H-Datei, erinnere, ist, wo ich all die Dinge zu erklären das wird innerhalb der Klasse existieren. Werfen wir einen Blick auf, dass. Alles klar, hier haben wir dieses @ interface, und diese sagt, dass hier kommt die Erklärungen der alles, was in meiner Klasse existieren wird. Dann habe ich einen Doppelpunkt. Dann habe ich dieses NSObject Sache. Diese Doppelpunkt bedeutet, dass Vererbung Bit diskutieren wir ein bisschen früher wurden. Das sagt alles, was ein NSObject tun können wo NSObject ist diese Klasse von jemand anderem geschrieben, alles, was diese NSObject tun können, möchte ich in der Lage sein, das zu tun. Mit den Worten: NSObject das bedeutet, dass ich im Grunde vererbte gesamte Funktionalität einer anderen Klasse. Das gab mir eine ganze Reihe von verschiedenen Methoden und Eigenschaften, die ich benutzen kann. Hier unten Ich erstelle 2 Eigenschaften. Das heißt, mein Schüler, wenn dies ein struct, wären dies die 2 Dinge Innenseite meiner struct, so jeder Schüler hat einen Namen das ist ein String, und ein Schüler hat auch eine Klasse, das ist ein int. Schließlich, hier unten Ich werde ein Verfahren zur meiner Studienzeit zu schaffen. Ich rief meine Methode, initWithName, und es dauert ein Argument, und dieses Argument ist ein String, und ich nannte es nennen. Lassen Sie uns nun an, wie wir tatsächlich diese Klasse implementiert aussehen. Hier, jetzt bin ich innerhalb meiner. M-Datei, m für die Umsetzung, schätze ich. Ich habe meine Implementierung, mein Ende, und hier ist, wo ich eigentlich bin definieren Welche initWithName tut. Ich habe initWithName, den Namen meines Parameter und dann dieses ist, wo ich tatsächlich die Schaffung bin ein Student, und so ist dies ein wenig kryptisch, aber das ist eine Art der Textvorschlag dass Sie in Ihrem Konstruktoren aufnehmen möchten. Diese Funktion zur Initialisierung hier initWithName, ist eine Art von Konstruktor. Sie sind im Grunde Bau eines neuen Student-Objekt und vielleicht schicken ein paar Daten darin. Das erste, was ich tun möchte, ist, dass ich anrufen möchten init auf dieser super Sache. Beachten Sie, dass, wenn ich sagte wieder hier in der. H-Datei dass alles ein NSObject hat ein Student hat auch. Das heißt, wenn ich einen Schüler, was ich auch tun müssen, ist zu schaffen stellen Sie sicher, dass die NSObject dass ich erben all diese Daten aus ist auch richtig initialisiert. Was muss ich sagen, ist diese super ist eigentlich los, um zum übergeordneten Klasse verweisen dass ich erben, so möchte ich sichergehen, dass ich zu initialisieren alles, was ich bin auf je bevor ich versuchen, es zu benutzen starten. Dann, wenn diese korrekt initialisiert ist dies wie gesagt, wenn malloc nicht null zurück, dann kann ich mit dem Einstellen einiger Eigenschaften. In JavaScript und PHP hatten wir dieses Schlüsselwort heißt dies und dies auf die aktuelle Instanz einer Klasse bezeichnet. In Objective-C nennen wir dieses Selbstverständnis. Wenn ich self.name sagen, bedeutet dies, dass das Objekt Ich habe gerade als ich sagte, Studenten alloc init das wird mir zu geben wieder ein Objekt. Das heißt, ich will den Namen des Objekts eingestellt zu dem, was ich gerade passiert in. Just in C mögen, greifen wir Mitglieder mit diesem Punkt, so self.name sagt der Name des Student-Objekt wird jetzt sein, was Sie gerade passiert in. Und so schließlich kann ich ihn zurückgeben, so bekomme ich tatsächlich etwas zurück. Haben Sie Fragen? Okay, so dass diese sich selbst = super init Wenn Sie nicht ganz verstehen, das Erbe Sachen mach dir keine Sorgen. Genau wissen, dass, wenn Sie jemals wollen Ihr eigenes init-Methode machen nur tun, und Sie werden gut zu gehen. Yeah. >> [Student] Was bedeutet, wenn selbst bedeuten? Das bedeutet, wenn wir malloc etwas, das wir geprüft werden, ob sie gleich null war, und wenn es null war, dann sind wir verlassen. Dies ist die gleiche Sache, denn wenn diese null zurück, dann werden wir wahrscheinlich gehst zu seg Fehler wenn wir versuchen, sie zu manipulieren beginnen. Das ist unsere Studenten-Klasse. Das heißt, wir können unsere Schüler in eine von zwei Arten zu initialisieren. Wenn ich sage, Studenten alloc init Ich bin nicht mit, dass die Methode, die ich gerade geschrieben habe, und stattdessen kann ich einfach sagen alice.name, und jetzt werde ich diese Eigenschaft Namen gesetzt. Ebenso, wenn ich will, dass initWithName Methode verwenden Ich kann nur sagen alloc und dann anstatt zu sagen init Ich werde diese Methode, die ich gerade erstellt anrufen, und ich werde in Bob passieren. An diesem Punkt hat dieses Objekt Bob einen Namen gleich Bob. Okay, hier unten bin ich mit diesem NSMutableArray, dass wir in früheren aussah. Ich Zuteilung space.Then ich Initialisierung ein neues Array. Ich werde zwei Dinge, um es hinzuzufügen. Dieses Array hält nun Studenten Objekte. Beachten Sie, dass nirgendwo habe ich zu sagen, das ist ein Array von Studenten haben. Ich sagte, es ist ein Array, period. Dann kann ich setzen, was nach innen von ihm, was ich will. Hier habe ich 2 Objekte. Schließlich habe ich ein anderes Objekt hier, diese TF. Hier in TF.h im Grunde das Gleiche. Ich komme aus NSObject, und durch die Art und Weise erbt, wenn Sie Klassen erstellen ist das alles für dich getan, diese Art von Schnittstelle Textvorschlag. Es verfügt über eine Eigenschaft der Studierenden. Ich habe ein paar Methoden hier, die nicht wirklich zu tun eine ganze Menge, und so das heißt nachdem ich dieses TF-Objekt erstellen Ich kann diese Methode grade auf das so nennen. Haben Sie Fragen zu Objective-C-Syntax, bevor wir Bewegung in etwas mehr starten interessante Anwendungen Entwicklung stuff? Okay, also lasst uns tatsächlich eine iPhone App. Die Kern-Klassen, die Sie im Inneren verwenden werden von Ihrem iPhone App genannt View-Controller, und eine View-Controller stellt grundsätzlich einen einzigen Bildschirm innerhalb Ihrer Anwendung, so wenn ich auf die Musik app, zum Beispiel, ein View-Controller darstellen könnte, in welcher Ansicht ich alle Songs auf meinem iPhone. Eine andere Ansicht-Controller sein könnte, wenn ich einen Song klicken und starten Sie die Wiedergabe oder wie ich bin Drilldown in Künstler. Jede dieser verschiedenen Bildschirmen könnte als eine andere Ansicht-Controller dargestellt werden, und eine View-Controller ist wirklich nur eine Klasse, wie dieser Bildschirm funktioniert, sagt. Dinge innerhalb eines View-Controller, werden wir Eigenschaften haben, so Dinge wie eine Schaltfläche wird eine Eigenschaft unserer Sicht Controller sein. Wir werden auch die Methoden haben, und diese sind im Grunde Event-Handler. Diese Methode sagt, wenn Sie diese Taste drücken Ich möchte etwas tun, und schließlich wieder werden wir verwenden dieses Selbstverständnis Schlüsselwort, um die aktuelle Instanz zugreifen. Schnittstellen in iOS zu bauen ist eigentlich wirklich, wirklich einfach. Sie haben dieses schöne Drag-and-Drop-Schnittstelle als Interface Builder, und die 2-Kern-Konzepte, die Anschlussmöglichkeiten für Ihre Objective-C Interface Builder sind IBOutlet und IBAction. Ein IBOutlet sagt einfach, dass, wenn Sie eine Immobilie, die eine Taste ist zu erklären, und Sie möchten es Haken bis zu etwas in Ihrer aktuellen UI, Sie gehen zu sagen, es ist ein Auslass. Ebenso, wenn Sie einen Event-Handler stellen dann wirst du sagen, es ist eine Aktion. Um tatsächlich verkabeln diese grafische Darstellung und der Code ist es wirklich, wirklich einfach. Wenn Sie eine IBOutlet anhängen möchten, ist alles was Sie tun müssen, steuern Sie auf, und wir werden sehen ein Beispiel für diese wirklich schnell. Sie steuern auf, wo es heißt View Controller. Du wirst in die Schnittstelle ziehen, oder umgekehrt, wenn Sie hook up einen Event-Handler möchten Sie gehen aus der Schnittstelle ziehen in der anderen Richtung. Werfen wir einen Blick auf eine wirklich einfache iOS Beispiel. Lasst uns ein neues Projekt erstellen. Ich werde kommen hier Anwendung, und ich werde Single View Anwendung klicken. Ich werde Sie auf Weiter. Ich gebe mein Projekt einen Namen. Ich nenne es Hallo. Interessanterweise übernimmt Apples Sie ein Produkt zu schaffen so dass Sie es verkaufen, und sie können Geld zu verdienen. Hier unten werde ich sagen, dass dies eine iPhone-App ist. Sie können eine iPad-App, oder wenn Sie wollen eine jener Apps erstellen das unterstützt sowohl Geräte, die Sie tun können zu. Diese sind, was Sie Häkchen aussehen soll. Sie wollen Storyboards, die wir später sehen werden verwenden, und Sie wollen auf jeden Fall die automatische Referenz-Zählung verwenden, das ist ein nettes Feature verhindert, dass Sie mit zu sagen malloc und free. Sofern Sie anrufen malloc und free wollen, würde ich lassen Sie diese überprüfen. Ich werde auf Weiter klicken, und schließlich, das wird mich fragen, wo ich es speichern möchten. Ich werde geschlagen zu erstellen, und hier gehen wir. Ich habe ein neues Projekt. Hier drüben auf der linken Seite befinden sich alle Dateien, die Innenseite meines Projekts sind, und merke, dass ich eine ganze Reihe bekommen, und ich habe nicht einmal etwas tun. IOS ist groß. Zum Beispiel, hier diese ViewController.h, dies wird meine erste View-Controller repräsentieren, so der erste Bildschirm Innenseite meiner App. Jetzt wissen wir, was dieser sagt. Wir sagen Ich rufe diese Klasse ViewController, und ein ViewController tut alles, dass ein UIViewController tut, und dies wiederum ist Teil der Klasse, dass Apple schrieb, dass macht eine Menge von praktischen Dinge für uns gerne den Bildschirm. Hier ist, wo ich eigentlich beginnen können definieren, was meiner Ansicht-Controller tut, und es stellt sich heraus, dass ich wirklich nicht brauchen nichts von alledem. Dies ist Codebausteine, dass Apple gibt mir kostenlos. Ich brauchte diese erste Zeile, oder ich habe nicht eine Klasse, so können wir loswerden, dass und loszuwerden diese. Okay, so ist dies meiner leeren Bildschirm an. Nun wollen wir auf dieser MainStoryboard.storyboard klicken, und das ist, wo es interessant zu werden beginnt. Dies ist der erste Bildschirm auf meinem App. Wenn ich eine Schaltfläche hinzufügen möchten, in HTML Ich hatte einen Knopf tag erstellen. In Android, müssen Sie eine Schaltfläche Tag zu erstellen, aber in iOS, wenn ich nur hier runter kommen nach rechts unten und wenn ich hier auf dieser dritte einem Klick, wo es heißt Objekte, und ich kann nach unten scrollen, oder ich können nach den Knopf. Und siehe da, eine Schaltfläche, wenn ich also ziehen Sie eigentlich Drop dieses Recht gibt, Ich habe gerade eine Taste, um diesen Bildschirm auf meiner App. Wenn ich den Text ändern wollen, kann ich doppelklicken Sie darauf, etwas sagen verlockend wie "Drücken Sie mir." Okay, jetzt, wenn ich dieses Programm ausführen, so dass wir es kompilieren, so, es laufe ich auf die Play-Taste in der oberen linken, und es ist meine App. Ich habe nichts, und ich bekam ein süßes suchen iPhone App. Wenn ich es stoppen möchten, können Sie auf die Stopp-Taste weil es mehr Spaß. Lassen Sie uns sagen, dass ich wirklich wollen, dass etwas passiert, wenn ich diesen Knopf drücken. Um das zu tun, was ich tun müssen, ist, ich brauche zu erstellen eine neue Event-Handler oder eine Aktion. Das bedeutet, dass ich eine Methode, die ich angerufen werden möchten erstellen müssen wenn ich die Taste drücken, so erstellen wir eine neue Methode. Ich bin in der ViewController.h. Ich muss sagen, dass ein Verfahren existiert. Ich brauche einen Bindestrich erster weil ich zu rufen diese auf dem View-Controller bin. Ich brauche zu geben diesem einen Typ. Der Typ dieser wird, dass IBAction, was wir sahen früher. Dies ist ein Event-Handler, also wird es eine IBAction zurückkehren, und dies ist ein Hinweis auf XCode zu sagen, dass Das ist etwas, was ich will, um etwas zu verdrahten. Ich kann ihm einen Namen geben, wie buttonPressed, Semikolon. Jetzt habe ich eine neue Methode in meiner Klasse deklariert. Ich habe gesagt, diese Methode hat zu existieren. Nun wollen wir in ViewController.m kommen, und lassen Sie uns sagen, was diese Methode zu tun. Wenn ich mit der Eingabe beginnen, zum Beispiel (void) buttonPressed Ankündigung XCode ist wirklich nett und autocompletes für mich. Das ist wirklich wunderbar. Beachten Sie hier, dass im Inneren des. M-Datei kann ich auch sagen nichtig, und das liegt daran, dass IBAction ist nicht wirklich ein Typ. Es ist eigentlich Hashtag irgendwo eine Lücke definiert werden, und wieder, dies ist nur ein Hinweis auf XCode, der sagt Ich möchte dies ein Event-Handler, und wir werden sehen, warum in nur einer Sekunde. Wenn diese Taste gedrückt wird, werde ich etwas ärgerlich zu tun gerne öffnet ein Popup. Um dies zu tun, dass ich eine neue Instanz dieser Klasse aufgerufen UIAlertView erstellen, und dies ist eine Klasse, dass Apple schrieb, dass geht um lästige Popups angezeigt. Wir nennen diese Popup-Benachrichtigung, und ich habe 2 Stufen, denken Sie daran, die Schaffung dieses Objekt. Das erste, was ich tun müssen, ist Speicherplatz zuweisen. Ich möchte eine UIAlertView. Ich möchte Speicherplatz zuzuweisen. Das ist meine erste Methode. Meine nächste Methode ist, möchte ich es zu initialisieren, und so habe ich dieses große, lange Methode namens initWithTitle. Das ist im Grunde geht zu kontrollieren, was dieses Popup sagt. Der Titel meines Popup kann hallo. Die Botschaft dieses Pop-up kann "Dies ist iOS." Delegierter Sache, ich weiß nicht, was das ist. Sagen wir, es ist nichts. Nun ist die Taste, die zu erscheinen hat kann etwas sagen wie "Es ist sicher," und ich weiß nicht wirklich wollen keine anderen Tasten, also lasst löschen, und schließen Sie die Halterung. Okay, habe ich einen extra ein. Dort gehen wir. Dies ist, wie kann ich ein neues Pop-up zu schaffen. Wenn ich tatsächlich zeigen das Popup will ich will die Show-Methode aufrufen. Um dies zu tun, dass ich wach und Show sagen, und wieder war autocomplete super nett. Wenn ich vergessen, was das war, wenn ich in s gerade eingegeben, Ich kann blättern Sie hier, um herauszufinden, was es war, und es filtert schön. Jetzt habe ich diese neue popup. Wir kommen wieder, was bedeutet, Delegierter später und jetzt will ich sagen, ich möchte diese Methode, die entlassen werden wenn ich die Taste drücken, so werde ich zurück zu meiner Storyboard, und ich will jetzt fügen Sie diesen IBAction. Das erste, was Sie tun möchten, ist, klicken Sie auf die Schaltfläche. Wenn ich diesen Knopf drücke ich will, dass etwas passiert. Ich werde nicht zu halten Kontrolle. Ich werde durch Klicken und Ziehen von der Taste über hier, wo es heißt View Controller. Wir können sehen, dass es schön leuchtet. Wenn ließ ich mit meiner Maus habe ich nun dieses Pop-up hier, wo ich einige Optionen haben. Eines davon ist die Ereignisse, die kann ich registrieren. Dies sind all jene Methoden, die ich in meiner h-Datei als IBActions erklärt. Dies ist, wie XCode weiß, was in dieser kleinen Liste angezeigt wird, so das ist nur ein Hinweis. Wenn ich auf Taste gedrückt, ich habe jetzt den Event-Handler registriert. In JavaScript mussten wir sagen, ich habe einige Code, den Event-Handler registriert. In Objective-C, es war wirklich so einfach. Wenn ich laufen diese wieder Jetzt wenn ich die Taste drücke meine Event-Handler wird ausgelöst, und ich werde um dieses Popup. Super, super einfach da. Wenn Sie schon immer einmal alle Ereignisse, die registriert werden passieren, siehe auf einer Komponente, wenn ich auf diese Schaltfläche klicken und ich komme hier auf der rechten Seite erstes sehen Sie hier kann ich Dinge wie die Art des Knopfes zu tun, wenn Sie so wollen eine jener Ich-oder die Taste Add Contact oder was auch immer. Wenn ich will, um alle Ereignisse, die auf diesen Button zu sehen wenn ich den ganzen Weg hierher auf der rechten Seite Wir können hier sehen, bei den Veranstaltungen habe ich all diese verschiedenen Veranstaltungen. Ich kann die Taste drücken, wenn ich lasse Sie die Taste los, wenn ich Leitungswasser verdoppeln oder was auch immer, und die, die ich gerade registriert ist diese Veranstaltung namens Touch Up Inside, und das sagt, dass sobald meine Finger weg kommt die Taste das Ereignis wird an Feuer gehen, und das ist genau das, was gerade passiert ist. Dies ist eine Art der Standard-Taste gedrückt Veranstaltung. Fragen so weit? Okay, das ist, wie können wir anfangen zu verdrahten Dinge in unserem Code in die Dinge innerhalb unserer Schnittstelle. Denken Sie an die erste Sache, die wir tun mussten, war, um den Code zu finden, und dann werden wir verdrahtet die Schnittstelle zum Code und es ist unsere erste App. Okay, das war wirklich cool, und wir haben diese Schaltfläche. Was passiert, wenn wir nicht haben wollen, um ein Bündel von Eigenschaften zu schaffen repräsentieren diese Tasten? Zum Beispiel, in Tic Tac Toe Ich habe 9 Tasten, und es wäre super, super ärgerlich, per Drag-and-Drop 9 mal oder wenn ich musste Tic Tac Toe mit 81 zu machen statt 9 und ich musste per Drag & Drop 81 mal, und das ist lahm. Was können wir tun, anstatt viel wie ein HTML wenn wir hatten Dinge wie IDs und Namen, und wir können für Dinge suchen durch ihre ID, gibt es eine ähnliche Vorstellung in iOS Tags genannt. Ein Tag ist einfach eine eindeutige numerische Kennung für eine Komponente. Wenn ich sage, hat dies einen Tag von 0, zum Beispiel, 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, wenn ich diesen Knopf zu wollen, kann ich einfach sagen, dass ich anrufen möchten Die viewWithTag Methode für das Objekt hier rüber, die self.view, die das aktuelle Bild darstellt, zum Beispiel. Wenn ich diese viewWithTag Methode aufrufen, werde ich zurück zu ziehen Sie die Schaltfläche mit tag 0. Werfen wir einen Blick auf diese durch den Bau Tic Tac Toe. Erstens ist dies mein Storyboard. Ich habe diese 10 UI Schaltflächen erstellt. Beachten sie alle die gleiche Größe. Wenn ich auf eines davon und ich komme zurück auf hier auf dieser rechten Seite du wirst sehen, ich stellte den font genau hier, so habe ich die Schrift ein wenig größer, aber was ich auch tat, war ich dieses Tag. Ich sagte, dass dies ein Tag von 1 hat, und das ist das oben links. Nun, wenn ich eine andere Schaltfläche klicken, wie diese zweite hier Jetzt sehen Sie, dass mein tag 2 ist. Jede dieser Tasten hat nur eine eindeutige Kennung, und so wird später wie ich anfangen zu interagieren mit meiner App. Das ist alles innerhalb von einem View-Controller, aber hier ist das, was wir haben. Wir haben 3 Immobilien hier. Die erste und letzte gehen, um den Zustand der mein Board vertreten. Grundsätzlich ist dieser erste ist ein Array darstellt, wo die Xs und Os sind. Das andere hier sagt uns der Reihe ist. Sie werden bemerken, dass ich auch diese Dinge hier. Vor wenn wir deklarierten Eigenschaften gaben wir ihnen einen Namen und einen Typ. Wir können ihnen auch einige zusätzliche Informationen hier. Das erste besagt, atomare, und was sagt das ist im Grunde nur eine Sache jemals versuchen, diese Variable zu einem Zeitpunkt zugreifen. Sie könnten mehr tun, komplexe Anwendungen, die multi-threaded sind, und so wieder in Scratch wir hatten verschiedene Themen, und verschiedene Sprites tun könnte verschiedene Dinge zur gleichen Zeit. Wenn das nicht der Fall, was es an nichts, dass wir am zu suchen, wenn wir atomare sagen, es ist eigentlich los, um die Dinge ein wenig schneller. Wir haben auch dieses Ding namens assign, stark oder schwach. Diese weisen nur sagt, dass dies ein Standard-Typ ist. Dies ist nicht ein Objekt oder ein Zeiger, denn dies ist nur ein bool, so bool in Objective-C gebaut. Das sagt nicht versuchen, etwas Besonderes mit Zeigern hier tun. Es ist eine regelmäßige alte Scaler. Starke und schwache, sagt dieser schwach, dass tatsächlich Ich möchte dies etwas in der View-Controller zeigen. Ich werde mich nicht um tatsächlich zuweisen oder init diese selber. Der Interface Builder, wenn ich die app laufen, wird alle, dass die Initialisierung zu behandeln. Wenn ich schwach sagen, sagt, dass jemand anderes wird zu erschaffen dies. Wenn ich stark zu sagen, sagt dieser, dass ich werde derjenige sein, Das ist die Schaffung dieses Board Objekt, und so habe ich hier einige weitere Methoden hier beispielsweise eine Aktion für, wenn das neue Spiel Taste betätigt wird, eine Aktion für, wenn keines der anderen gedrückt werden, und et cetera. Wir werden nicht in zu viel von der Logik des Tic Tac Toe zu bekommen, obwohl es sehr spannend, aber lassen Sie uns einen Blick auf einige der Dinge, die wir im Inneren des iOS tun können. Dieses neue Spiel-Methode wird gefeuert werden wenn ich drücken Sie die neuen Spiel-Taste. Um Haken, dass bis ich einfach zu mir kommen Storyboard. Ich klickte auf neues Spiel. Wenn ich hier rüber kommen an der richtigen kann ich sehen, dass Touch Up Inside ist der newGame Verfahren verdrahtet. Das ist, warum dies wird gefeuert. Die newGame Verfahren wird einige Set zu tun up. Es wird zu sagen, ich möchte, dass du den Zustand des Boards löschen. Dies ist eine schöne Methode veränderlichen Arrays. Dies wird zu sagen, es ist jetzt X an der Reihe, und jetzt werde ich die Vorteile dieser viewWithTag Sache zu nehmen. Ich weiß, dass meine Tasten die Tags 1-9, und das ist etwas, das ich willkürlich ausgewählt. Wenn ich will, um den Text der einzelnen Tasten eingestellt leer zu sein weil ich gerade erst begonnen ein neues Spiel, und ich will nicht, dass Xs oder Os nach links über I kann dies tun. Ich kann sagen, ich möchte die Ansicht mit dem Tag, 1, 2, 3, 4 et cetera. Dies wird zu ziehen eine andere Taste jeder Zeit. Hier habe ich werde es gegossen, um UIButton. Genau wie wir konnten ints zu Schwimmern und umgekehrt gegossen Diese sagt, dass ich dies zu einer UIButton gegossen werden soll. Das heißt, die Art der dies ein UIButton sein * wegen der Zeiger, aber keine Sorge, sie sind nicht gruselig mehr. Einmal habe ich diese Taste ich eine Methode nennen werde. Diese Methode wird aufgerufen setTitle fürState, und so das sagt Ich möchte den Text der Schaltfläche auf die leere Zeichenkette, und ich will es auf die leere Zeichenkette, wenn es nicht gedrückt sein. Wenn ich mit dieser Methode bin, kann ich den Text der Schaltfläche sobald jemand trifft, aber wir sagen wollen, wenn die Taste nur da sitzen Ich möchte den Text leer zu sein. Schließlich werden wir mein Board zu initialisieren, und ich werde sagen, dass alles derzeit bei 0, so dass diese Vorstandsmitglieder unveränderlich ist eine veränderliche Array was bedeutet, ich kann die addObject Methode und nur 0 Innenseite es nennen. Das ist, was passiert, wenn ich ein neues Spiel zu erstellen. Werfen wir einen Blick auf ein anderes. Diese Methode ist hier die IBAction, werde gedrückt werden ist jedes Mal, wenn einer dieser Plätze gedrückt wird. Jetzt haben wir einige Tic Tac Toe Logik hier. Wir herauszufinden, wer an der Reihe ist, und auf der Grundlage, dass wir entweder ein X oder ein O, aber wir bemerken, dass wir Wiederverwendung dieses gleichen Event-Handler für jeden einzelnen dieser Tasten. Das bedeutet, dass ich nicht über eine Methode für die linke obere Taste eine andere Methode für die rechte untere Taste, obwohl ich das getan haben. Das wäre nicht wirklich gut ausgebildet sein. Was ich hier mache ist, dass ich eigentlich vor sich geht, um festzustellen, was der tag der Taste, die gedrückt wurde ist. Man merkt, dass diese Methode für das Spielen ein Argument. Es heißt Absender, und was Absenders wird Absender zu gehen stellen genau das, was Wirkung auf genommen. Wenn ich eine Taste drücken, wird dieser Sender werde, dass UIButton sein dass ich tatsächlich gedrückt wird, so dass, dass UIButton hat einen Tag, weil ich einen Tag erstellt. Wenn ich an dem Tag erhalten wollen, kann ich nur sagen, Ich will den Tag des Absenders, und wieder, ich habe es gerade zu einem UIButton gegossen. Ich weiß zufällig, dass der Absender wird ein UIButton sein. Es muss nicht immer ein UIButton sein. Ich könnte zum Beispiel, registrieren Sie den gleichen Event-Handler  Für eine für eine Taste, eine für einen Schieber. In diesem Fall, ich weiß, sie sind alle Tasten, so werde ich sagen, Ich möchte dies eine Schaltfläche, und dann kann ich den Tag zu bekommen, und von dem Tag weiß ich jetzt, wo ich Innenseite der Platte bin. Dann kann ich einfach gesetzt entweder das X oder das O, die wiederum spiegeln, überprüfen, wer hat, et cetera gewonnen. Haben Sie Fragen zu diesem so weit? Okay, alle Code, den wir online gebucht, wir wollen nicht in zu viel bekommen der Tic Tac Toe Logik, aber jetzt können Sie das wirklich sehen alles, was wir tun ist, dass wir über dieses Array Looping, so haben wir ein paar for-Schleifen hier, und wir sind nur im Vergleich zu sehen, haben wir ein Match in allen Zeilen, ein Spiel in einer Spalte oder so etwas. Um tatsächlich führen Sie dieses app, wenn ich tippen Sie auf eine dieser Schaltflächen daß play-Methode gefeuert wurde, so dass bedeutet Ich habe gerade die Taste, um ein X sein, so dass nun mit dieser Taste wird ein O sein, und so weiter, und damit ist, wie wir fangen an, mit diesem einzigen Seite App interagieren. Wir werden den Code zu veröffentlichen, so zögern Sie nicht, dass durchgehen, aber lassen Sie uns nun über einige Apps, die mehr als nur eine Seite sind, zu sprechen. So spannend wie Tic Tac Toe war, eine Menge von Anwendungen innerhalb iOS sind so eine Art dieser Drilldown Dinge mit mehreren Bildschirmen. Das erste Konzept, das wir brauchen, um darüber zu sprechen sind Protokolle, und ein Protokoll ist einfach eine Reihe von Methoden dass Sie versprechen, zu definieren. Wenn ich erstellen dieses neue Protokoll mit 2 Methoden, diese erste, wenn der Rückgabetyp void ist, nannte ich es foo. Es dauert keine Argumente. Ich habe eine andere Methode. Es gibt einen int. Ich nannte es sperren, und es dauert ein Argument. All dieses Protokoll ist, dass ist SomeProtocol aufgerufen hier dies ist eine Reihe von Dingen, dass jemand zu implementieren. Ich habe nicht in dieses Protokolls gesagt, was foo tut. Stattdessen werde ich nur sagen, man könnte foo definieren, wenn Sie wollen. Wenn ich die Schaffung eines View-Controller oder das Erstellen einer Klasse Ich kann innerhalb dieser Klasse Versprechen umsetzen einige dieser Methoden, so zum Beispiel, wenn Sie sagen das jetzt sagt, ich bin ein Versprechen Sie, dass im Inneren dieser Ansicht Controller-Klasse werde ich Definitionen für sowohl foo und bar. Warum ist das sinnvoll? Viele Komponenten im Inneren des iOS nutzen diese Entwurfsmuster bezeichnet Delegation, und was Delegation, sagt ist, dass, zum Beispiel, wenn ich ein Textfeld haben und es gibt einige Ereignisse, die Innenseite meiner Textfeld registriert werden konnte, , anstatt separate Ereignisse, was ich tun kann, ist, dass ich sagen kann, der Delegierte diesem Textfeld wird ein Gegenstand sein. Wenn ich sage, dass dies ein Delegierter ist nun, dass bedeutet, dass wenn ein Ereignis würde in das Textfeld abgefeuert worden anstatt sie oder so etwas registrieren ist es nur geht, um eine Methode für den Delegaten aufrufen. Zum Beispiel, Innenseite meiner Textfeld Ich habe eine Methode, wenn ich drücken Sie getan Schaltfläche in der rechten unteren Ecke, und so anstatt Registrierung Ereignishandler, was ich sagen kann ist, Textfeld, hier ist ein Objekt, das ich will, dass du eine Methode aufrufen jedes Mal, wenn jemand drückt auf die Schaltfläche Fertig, und das bedeutet, dass das Objekt etwas Protokoll implementieren muss das sagt, ich verspreche, dass getan Button-Aktion definieren, denn wenn es nicht definieren, dass Methode und Sie drücken Sie Fertig, dann wird es verwirrend sein. Werfen wir einen Blick auf ein Beispiel. Hier habe ich einfach ein Textfeld, und eine der Eigenschaften dieses Textfeld über hier auf dieser rechten Seite ist der Delegierte. Dies ist eine Eigenschaft aus der Klasse. Was ich getan habe ist hier kontrolliere ich geklickt, und ich schleppte von dieser Stelle hier der View-Controller, und das sagt jetzt die Delegierten dieses Textfeld wird die View-Controller sein. Das bedeutet, dass, wenn einige Aktionen passieren, anstatt Registrierung separate Ereignishandler Ich möchte, dass sie an die Delegierten zu senden. Werfen wir nun einen Blick auf meine View-Controller. Innerhalb der. H-Datei Ich habe ein Versprechen gegeben. Ich habe versprochen, einige Methoden innerhalb dieses Protokoll implementieren genannt UITextFieldDelegate, und wieder dies sind nur einige Liste einiger Dinge, die ich wählen umsetzen können. Wenn ich hier in meiner. M-Datei kommen, habe ich eine solche Methode implementiert. Ich habe es nannte textFieldShouldReturn weil das ist, was es im Inneren des Protokolls aufgerufen wurde. Und jetzt, wenn ich drücken Sie die Schaltfläche Fertig Inneren dieses Textfeld Dies ist, was los ist, um aufgerufen werden, so dass ich nicht registrieren Sie einen Event-Handler. Ich habe den Delegierten, und wenn dieses Ereignis ausgelöst Dies ist die Methode, die aufgerufen wird, so dass, wenn ich über kommen hierher, um mein Storyboard und führen Sie es- Während das ist Beladen können wir sehen, was hier geschieht. Auf meinem Bildschirm Ich habe 2 Dinge. Ich habe dieses Textfeld, und ich habe dieses Etikett vorzeigen. Ich bin einfach zu sagen, ich will den Text des Labels um gleich was der Benutzer im Inneren des Textfeld eingegeben haben. Das nächste Zeile hier ist einfach eine Methode, die ich anrufe auf das Textfeld, dass ich möchte, dass du die Tastatur auszublenden sagt. Dies ist nur die willkürliche Verfahren, dass Apple wollte. Auch bevor ich irgendetwas musste ich alles verkabeln hat, so dass ich zum ersten Mal hier. Aus der Sicht Regler I ziehen Sie über das Textfeld. Ich lasse, und ich kann hier sehen, dass ich diese in das Textfeld Eigentum zu machen da hier in der View-Controller Ich habe eine Eigenschaft definiert das ist ein IBOutlet von einem Textfeld. Dieser sagt, dass ich können diese Eigenschaft verkabeln einem Textfeld in meinem UI. Nun, wenn ich darauf klicken kann ich anfangen zu tippen. Nun, wenn ich das getan klicken, das wird zu feuern ein Ereignis, dass ich jetzt zu reagieren. Keine Event-Handler. Das ist, wie ich reagierte auf diese Schaltfläche Fertig. Sinn? Dies ist nicht ein Entwurfsmuster, dass-Sie vielleicht nicht immer finden sich Erstellen Ihrer eigenen Protokoll, sondern nur wissen, dass einige verschiedenen iOS Komponenten registrieren Veranstaltungen in unterschiedlicher Weise. Buttons, zum Beispiel, verwenden Sie diese IBActions. Textfelder, auf der anderen Seite gehen, um Delegaten verwenden. Wir können sehen, und Sie können all das im Inneren der Dokumentation. By the way, gibt es eigentlich eine Tonne UI Zeug in iOS für Sie gebaut, so zum Beispiel die Art und Weise habe ich sagen, dass in der unteren rechten getan ist Ich empfehle dieses Textfeld. Ich kam hierher. I nach unten gescrollt ein bisschen zu Schlüssel zurückgeben, und ich kann eigentlich machen dies eine ganze Reihe von Dingen, wie wenn ich will, dass zu sagen, Notruf sondern ich kann das tun, was völlig zufällig, und ich weiß nicht, warum es einen eingebauten Notruftaste, aber dort, es sagt Notruf wirklich kleine Buchstaben. There you go. Definitiv zu erforschen all diese verschiedenen Optionen in iOS. Haben Sie Fragen zum Delegierten? Wieder nur ein interessantes Design Pattern, das Sie kennen sollten. Okay, lasst uns weiter einen Blick auf Tabelle Aussicht. Eine Tabelle Ansicht ist im Grunde, dass der Posten, die alle über dem Platz in iOS ist. Wenn Sie durch alle Ihre Kontakte Spiegeln, du bist auf der Suche die Einrichtung Seite, und diese Art von Liste der Dinge ist eine Tabellenansicht genannt. Die Implementierung einer Tabellenansicht in iOS ist ziemlich einfach. Anstatt eine Klasse, die von diesem abwärts UIViewController wie wir getan haben, bevor wir brauchen einfach zu sagen, anstatt alles, was ein UIViewController Ich will tun, Ich sage alles, was ein UITableViewController ich tun will, so dass Sie einfach fügt einige zusätzliche Dinge, die völlig für uns getan werden. Wir müssen sehr wenig grundsätzlich in die Lücken innerhalb der Tabelle zu füllen tun. Zur Anzeige einer Tabelle Ich muss einige Fragen zu beantworten. Die erste Frage, die ich beantworten müssen ist, wie viele Abschnitte sind in der Tabelle? Wenn Sie durch Ihre Kontakte App Spiegeln Sie feststellen, dass es eine Art ist organisiert von der As, dann haben Sie die Bs, und Sie haben das kleine Sub-Header. Jeder von denen wird als ein Abschnitt. Sie kann oder auch nicht brauchen diese. Das erste, was Sie tun müssen, ist eine Methode implementieren genannt tableView: numberOfSectionsInTableView. Das gibt einfach, wie viele Abschnitte, die Sie haben, so könnte dies zu sagen wieder ein, wenn Sie einen großen Tisch Blick haben. Die nächste Frage, dass iOS wissen muss, ist, wie viele Zeilen haben Sie? Zum Beispiel, du bist durch einen Tisch Blick Spiegeln. Sie haben eine feste Anzahl von Songs, die Sie auf der Suche sind oder eine feste Anzahl von Kontakten. Wenn Sie mich natürlich nicht, dass viele, und damit ist, wie iOS weiß, wie viele Zellen anzuzeigen. Auch könnte dies etwas sagen wie Rücklauf 3. Mein Tisch Ansicht hat 3 Zeilen. Schließlich muss iOS zu wissen, was jede Zelle aussieht, so, was es tatsächlich tun werden, ist diese Methode aufrufen, hier unten, Diese tableView: cellForRowAtIndexPath. Es wird diese Methode auf jeder einzelnen Zelle im Inneren der Tabelle nennen. Woher weiß er, wie oft es nennen? Nun, Sie sagten es in der Anzahl der Zeilen im Schnitt. Wir werden dies auf jeder unserer Zellen nennen, und innerhalb dieser ist, wo man tatsächlich Dinge tun, wie setzen Sie den Text oder sagen Ihnen, was die kleine blaue Taste auf der rechten Seite tut. Das Muster für immer diese Zellen, werden wir diese Methode verwenden genannt dequeueReusableCellWithIdentifier. Objective-C ist eigentlich sehr bekannt für die lächerliche Länge ihrer Methode Namen, und das ist wirklich ein schönes Beispiel dafür Beispiel. Was diese Methode tut, ist dies nur sagt, ich will, dass du mir eine Zelle. Nur ein iOS Sache. Wenn Sie so etwas wie 100.000 Songs auf Ihrem iPod was iOS nicht tun möchte, ist zuzuweisen 100.000 Zellen, denn wenn man an der Spitze der Liste sind, brauchen Sie wirklich brauchen, um Speicher zu reservieren für die Zelle, 99.000 Zeilen nach unten ist? Nein, denn wie Sie Scrollen sind, können Sie Art zuordnen, wie Sie entlang gehen. Dies wird für Sie erledigt. Sie müssen nicht über alle diese dumme Leistung Sachen kümmern. Alles, was Sie sagen, ist, dass Sie diese Methode aufrufen dequeueReusableCellWithIdentifier, und das sagt, okay, wenn du ich werde eine neue Zelle für Sie erstellen müssen. Aber wenn Sie an der Unterseite des Tisches und du bist schon einige Zellen zugeordnet an der Spitze der Tabelle, die Sie wirklich nicht zu jeder Zeit bald brauchen Ich werde Ihnen eine von denen zurück, anstatt einen neuen, und so ist dies eine schöne Leistung Sorge. Sie haben noch zu vergeben den Zellen selber. Das wird Ihnen wieder eine Zelle. Es wird zu euch zurückkehren eine Zelle Objekt. Sobald Sie die Zelle Objekt Zeug es tun kann. Sie können den Text der Zelle mit dieser Eigenschaft namens Beschriftung gesetzt. Sie können diesen Pfeil auf der rechten oder eine andere random stuff hinzufügen mit diesem anderen Eigenschaft namens accessoryType, und so weiter und so fort. Werfen wir einen Blick auf die tatsächliche Umsetzung einer Tabellenansicht jetzt. Als ich dieses Projekt erstellt anstatt zu sagen einzigen Ansicht Anwendung Ich kam eigentlich hier zum Master-Detail-Anwendung, und so im Grunde entspricht dies der Mail-App auf dem iPad mit der Tabelle auf der linken Seite und dann den Inhalt auf der rechten Seite. Auf dem iPod oder iPhone, das wird zu einer einzigen Tabelle Ansicht entsprechen. Das ist, wo ich meine Starter-Code bekommen. Werfen wir zunächst einen Blick auf das Storyboard. All dies wurde für mich getan, im Grunde geschaffen. Diese Navigationsleiste zeigte mir, was ein Beispiel Zelle aussehen könnte, und ich kann doppelklicken Sie diese, den Titel ändern. Alle anderen UI Bedenken, die ich verarbeiten kann es. Die Header-Datei sieht wirklich einfach. Anstatt zu sagen, dies ist UIViewController wir jetzt sagen, dies ist ein TableViewController, so dass wir wissen, dass wir all diese Tabelle Methoden aufrufen wollen. Weiter möchte ich eine Immobilie, die gehen zu vertreten hat erstellen die Dinge in meinem Tisch. Diese Tabelle wird willkürlich angezeigt eine Liste der Früchte, und so brauche ich, um etwas Array erstellen in denen ich einfügen können Früchte. Innerhalb von meiner Implementierung-Datei das erste, was ich tun möchte, ist, möchte ich sicherstellen, dass ich zu initialisieren dieses Array. Ich sagte alloc init schuf mein Obst-Array, und ich bin der Zugabe von 4 Dingen zu, von denen viel mehr umstritten als die anderen 3 ist. Und jetzt habe ich ein Array der Größe 4. Wir schütteln es in CS50. Ich habe jetzt ein Array der Größe 4. Jetzt werde ich zu starten Beantwortung dieser Fragen, und tatsächlich, wenn ich diese app erstellt all dies wurde bereits für mich getan. Ich hatte nicht zu tippen die Anzahl der Abschnitte in der Tabellenansicht. Es war schon da, und ich bin in die Lücken füllen. Wie viele Abschnitte habe ich? One. Alles erledigt. Wie viele Zeilen habe ich? Nun, ich eine Zeile für jede Frucht haben, so dass diese Anzahl ist eine Eigenschaft von jedem Array, wie groß ist sie sagt? Das ist, wie viele Zeilen die ich habe. Schließlich muss ich sagen, was nicht jede Zelle aussehen? Ich werde dequeueReusableCellWithIdentifier sagen. Wiederum wurde dies bereits für mich geschrieben. Ich habe nicht zu tun haben, dies selbst, und ich möchte, um wieder diese Zelle an dieser Stelle. Beachten Sie, dass nennen wir die gleiche Methode auf jeder einzelnen Zelle, und dieses Argument hier, diese indexPath Argument, sagt, was Reihe I in. bin Wenn ich sage indexPath.row hier unten dies wird 0 sein, dann wird 1 sein, dann wird 2 sein, und dies ist daher weiß ich welche Zelle Ich bin derzeit angezeigt. Ich möchte den Text der Zelle unter Verwendung dieses textLabel Eigenschaft nach innen meine Früchte Array gehen und das Objekt entsprechend jeder Zeile. Wenn dies ein String ist, bin ich jetzt die Einstellung der Text-Eigenschaft auf eine Zeichenfolge. Ich kann eine andere Sache. Ich kann auch registrieren Sie einen Event-Handler für jede der Zellen, so, wenn ich tippen jede dieser Zellen Diese didSelectRowAtIndexPath, das wird für mich angerufen werden, so einfach durch die Definition dieses Ich kann nun, was passiert, wenn Sie eine Zelle tippen, und wieder übergeben wir in der Zelle wurde abgehört so dass wir wiederverwenden können diese gleichen Event-Handler für alle unsere Zellen. Auch dies ist etwas, iOS für mich tut. Lasst uns zeigen andere lästige Popup das einfach sagt, man nahm etwas, wo, dass etwas wird die Zeile Objekt. Als ich dies ausführen, werde ich diese schönen Tisch Blick haben mit einer Zeile für jedes dieser Frucht, und wenn ich tippen ein es sagt mir, was passiert ist. Sinn? Wir bauen ein bisschen komplizierter einer App, so viel wie Sie Ihnen abgeholt Tomate ist. Das schöne Teil über die Storyboards ist es nicht nur geht, um uns design Bildschirmen individuell helfen, es ist auch uns helfen zusammen binden unsere gesamte App, so dass die endgültige app wir Gebäude sein müssen, ist dieses schöne Sport-News-Reader, und so es geht um mehrere Bildschirme haben, und so kann ich tatsächlich repräsentieren jeder dieser mehrere Bildschirme auf dem Storyboard und ich kann verkleinert und sehe meine app von einem hohen Niveau. Um ein neues Element innerhalb meines Storyboard Es ist wirklich einfach Innenseite Interface Builder. Wenn ich zu einem anderen Bildschirm, um diese hinzufügen wollen, zum Beispiel, Ich kann erste Verkleinern mit dem Pinch-Zoom, dass Apple so sehr liebt, und hier unten, bevor ich für eine Schaltfläche suchen und ich per Drag & Drop auf eine Schaltfläche wenn ich einen neuen Bildschirm erstellen wollen, kann ich eigentlich nur per Drag & Drop eine ganze View-Controller, so dass, wenn ich das nehmen, ziehen Sie es hier rüber, hey, es gibt einen anderen Bildschirm, und jetzt mit dem gleichen Storyboard-Datei Ich kann allen Bildschirmen innerhalb meiner app, und ich kann Verkleinern und sehen, wie sie interagieren. Diese werden noch zu interagieren. Die Art und Weise, in der diese 2 Bildschirme zu interagieren definieren Sie Beziehungen. Grundsätzlich können Sie sagen, dieses Fenster, wenn Sie diese Taste drücken, Ich möchte Sie zu gleiten, um dieser neuen Bildschirm. Das heißt, es ist diese Art von Beziehung zwischen  der erste Bildschirm und der zweite Bildschirm. Sie haben grundsätzlich einen Pfeil von dieser Schaltfläche zum zweiten Bildschirm sagen, dass, wenn Sie diese Taste drücken, das, wo ich hin will ist. Genau wie wir die Kontrolle angeklickt und gezogen, um diese Filialen definieren wir werden das gleiche tun, um diese segues definieren. Wir werden ein Beispiel dafür zu sehen, und bevor wir tatsächlich Übergang von einem Bildschirm zum anderen iOS ist schön genug, um diese Methode aufrufen genannt prepareForSegue, und das ist, wo wir beginnen können Senden von Daten von einer Anwendung zur anderen. Im Beispiel sind dabei, es zu betrachten wird grundsätzlich erlauben uns Baseball-Teams von Ligen und Divisionen filtern. Wenn ich eine Liga auswählen, zum Beispiel, ich will den Übergang zu meinem nächsten Bildschirm, wo ich alle Abteilungen angezeigt werden können in dieser Liga oder den verschiedenen Teams. Ich brauche, um zu diesem Bildschirm, was Teams sollten anzuzeigen senden. Um dies zu tun, dass ich gehe, um die Vorteile dieser Methode nehmen Sie hier. Schließlich, nur ein zufälliger Punkt auf iOS. Wenn Sie die Daten speichern wollen gibt es dieses Ding namens Kerndaten, das ist eigentlich ganz kompliziert zu arbeiten. Sie können auch SQL verwenden, um Daten zu speichern, die wiederum ist schön, aber irgendwie auf der komplizierteren Seite zu arbeiten, aber iOS unterstützt auch diese wirklich coole Dinge genannt Property-Listen, und eine Eigenschaft Liste ist nur eine Datei, die Schlüssel-Wert-Paaren darstellt. Sie definieren eine Liste von Schlüsseln, und Sie sagen, diese Taste wird ein Array sein. Dieser Schlüssel wird ein String sein, und im Grunde alles, was Sie tun können in JSON kann man im Inneren zu tun einer Immobilie Liste so dass diese wirklich schön ermöglicht es uns, mit einigen Daten zu arbeiten. Zum Beispiel habe ich diese Teams.plist die ich schuf. Ich habe eine neue plist-Datei, und ich kann Drilldown. Dies ist ein Wörterbuch, das ein Wörterbuch ist, sind diese Saiten, und so ist dies eine schöne grafische Darstellung eines JSON-Dokument oder einfach nur eine Reihe von Schlüssel-Wert-Paaren, und so ist dies die Daten, dass ich mit Innenseite meiner App zu arbeiten. Lassen Sie uns zuerst hierher kommen. Wir haben viel mehr Dateien jetzt. Aber lassen Sie uns zuerst hierher kommen, um das Storyboard. Das Storyboard hier-wenn ich Verkleinern- können wir nun sehen, dass dies der Fluss meiner app ist. Ich bin zuerst zu auf diesem Bildschirm starten. Ich werde um einen Drilldown auf diesem Bildschirm und ich werde um einen Drilldown auf diesem Bildschirm, und wir können sehen, dass, wenn ich Art von Bewegen eines davon rund wir haben diese Pfeile von hier bis hier geht, und die Art, wie ich definieren, dass Pfeil war, wenn ich zoomen ein wenig, und wenn ich über diese View-Controller, und hier ist eine Zelle, und ich möchte sagen, dass wenn Sie eine Zelle tippen Ich möchte Sie zu gleiten zu einem anderen Bildschirm. Ich kann einfach mit gedrückter Steuerung, scrollen Sie über ein wenig, halten Sie Kontrolle, ziehen Sie diese Zelle über und loslassen. Und hier sagen wir, was ist der Übergang, den Sie verwenden möchten? Wollen Sie diese Folie, was als Push ist zu verwenden? Wollen Sie schieben von unten nach oben? Das nennt man modal. Und wenn ich auf eine von ihnen, es geht um diesen Pfeil für mich zu ziehen, und das bedeutet, dass ich tatsächlich gehandhabt, was passiert, wenn ich diesen Knopf grafisch drücken. Ich habe keinen Code schreiben, um tatsächlich von einem Bildschirm zum nächsten gleiten. I definiert dies visuell Innenseite Interface Builder. Wenn ich auf diesen Pfeil, können wir sehen, dass ich dieses Ding einen Namen gab. Ich nannte es showDivisions, und dies ist, so dass ich weiß, Welche Übergang bevorsteht, und wir werden sehen, warum in nur einer Sekunde. Das ist, wie ich bis die verschiedenen Bildschirme in meiner App verdrahtet. Wäre dies ein Knopf, zum Beispiel, anstatt eine Tabellenansicht, Ich konnte steuern auf den Button klicken, ziehen Sie auf den nächsten Bildschirm und das ist, wie ich die Navigation auf diese Weise zu tun. Sehr schnell, wenn wir kommen ins MasterViewController, wieder, wir einfach gehen, um eine Liste der Dinge zu definieren Das wird in der Tabelle angezeigt werden. Hier bin ich, dass ich möchte, dass du diese plist Datei zu nehmen, und ich möchte, dass du es zu laden in einem Wörterbuch, und wenn man diesem Wörterbuch haben, werde ich die gleichen Fragen erneut beantworten. Hier ist die Anzahl von Abschnitten. One, gibt es eine Zeile für jede Liga, und der Text jeder Zelle sollte entweder die erste, die erste Liga, die zweite Liga, und so weiter. Schließlich werde ich diese Methode, dass wir gerade gesehen haben als prepareForSegue verwenden, und dies ist die Methode, werde gefeuert ist, wenn ich auf an einem dieser Reihen und somit diesen Übergang Aktivierung , dass ich mit den Pfeilen. Dies wird sagen, dass ich kann über mehrere Beziehungen von einem Bildschirm zum anderen. Wenn ich 2 Tasten und jede Taste gelangen Sie zu einem anderen Bildschirm Ich werde 2 segues, 1 für jede Taste haben. Aber diese prepareForSegue ist wiederum würde wiederverwendet werden für jede der verschiedenen Beziehungen, eine Einrichtung, so daß, dass ich eine Möglichkeit brauchen zu identifizieren, wenn Sie die erste Taste drücken oder drücken Sie die zweite Taste. Erinnern, wann ich, dass segue einen Namen gab, diese showDivisions, das ist, wie ich jetzt weiß, dass dies die segue, die aktiviert wurde ist. Alles, was ich tun möchte, ist, ich möchte sagen, Ich möchte herausfinden, was ich gerade getroffen, und so dazu kommen, kann ich sagen, ich will die indexPath für die ausgewählte Zeile, erinnere mich an die indexPath sagt nur, wo ich geklickt nur, und dann will ich sagen, ich möchte, um herauszufinden, wohin ich gehe. Diese destinationViewController, das ist eine Eigenschaft des segue. Das ist der Bildschirm ich gehe, so weiß ich, dass der Bildschirm ich gehe genannt wird DivisionsViewController weil ich erstellt diese Klasse, und so jetzt, wenn ich sage d.divisions Ich bin jetzt eine Eigenschaft des View-Controllers Ich bin zu gehen. Dies ist, wie ich das Senden von Daten von einem Bildschirm zu einem anderen Bildschirm. Einfach mal bei dieser DivisionsViewController Sie können hier sehen, dass in der. h-Datei es ist, dass die Immobilie Divisionen, und das ist, was ich bin im Grunde bevölkern, so das ist, wie ich weiß, dass ich die Anzeige der Divisionen entspricht die Liga, dass ich angeklickt und wieder, Die eigentliche Tabelle Ansicht sieht so ziemlich das gleiche, nur die Beantwortung die 3 einfache Fragen sowie die Identifizierung was passiert, wenn Sie zum nächsten Bildschirm zu bewegen. Nur ein paar andere Dinge hier. Man merkt an der Spitze hier, dass anstatt zu sagen # include Ich jetzt sage # importieren. Dies ist nur ein Objective-C Ding. Der Import ist im Grunde eine schönere Version von include, und zum Beispiel, müssen wir wissen, was diese Klasse ist, so kann ich nicht einfach sagen DivisionsViewController. Wenn wir nicht hashtag standardio.c innerhalb unserer. C-Datei der Compiler hatte keine Ahnung, was printf war. Ebenso, wenn ich nicht importieren DivisionsViewController Der Compiler hat wirklich keine Ahnung, was ein DivisionsViewController ist. So stellen Sie sicher, dass im Inneren Ihres anders. M Dateien, die Sie sicher, dass Sie importieren zu machen die entsprechenden. h-Dateien, so dass der Compiler weiß, was los ist. Schließlich, was Apple letztlich nicht wird zeigen einige Daten über eine Web-Ansicht, und so eine Web-Ansicht ist ein Objekt, in dem Sie einbinden ein kleines Web-Browser innerhalb Ihrer Anwendung. Alles, was Sie tun müssen, ist eine URL, um Ihren Webbrowser zu liefern, so möchte ich auf mlb.mlb.com gehen, und dies ist, wie kann ich die Homepage für jedes Team zugreifen, und so, indem in dieser URL die Web-Ansicht kann das für mich anzuzeigen, und ich kann um zu sehen, und Simulator in Betrieb ist durch diese ein. Nun kam von meinem plist. Wenn ich das auf diese kamen auch aus meiner plist, und dies Gleit behandelt wurde durch die Definition dieser segues. Ich klicke auf diese und eine weitere, und jetzt hier ist meine UIWebView, so wie, dass hier ist die Website für die URL, dass ich nur eingebettet, und ich habe nichts zu verrückt zu behandeln. Dies ist, wie eine Web-Seite anzuzeigen. Dinge wie diese Back-Button sind auch hier die mir gegeben völlig kostenlos, weil ich diese Beziehungen mit segues definiert. Haben Sie Fragen? Yeah. [Student] Also, wenn Sie alloc verwenden, die Sie nie auf freie alles haben? Genau, wenn Sie alloc und init rufen Sie nicht, um es zu befreien. IOS wird all das für Sie erledigen. Es ist wunderbar, und du bist nicht brechen alle Regeln. Yeah. [Student] Würde man mehr Teams, die auf den Bildschirm passen könnte, würde es automatisch mit einem Scroll-Option, oder ist das etwas, was Sie brauchen, um hinzuzufügen? Genau, wenn ich mehr Mannschaften hatten, zum Beispiel, würde es automatisch verarbeiten das Scrollen für mich und all die Leistung betrifft mit dem riesigen Tisch sind auch total für mich behandelt. Weitere Fragen? Der gesamte Code wird veröffentlicht. Wir Art über ein wenig der mehr Kleinigkeiten beschönigt, aber Dinge wie die Einstellung einiger Eigenschaften der Web-Ansicht sind nur Dinge, die Sie, indem Sie Apples Dokumentation erhalten können, das ist wirklich sehr, sehr schön angelegt. Sie haben eine Menge der Probe Apps und beispielsweise Nutzungen verschiedene APIs, also auf jeden Fall durchlesen denen, wenn du kannst. Nur ein paar hilfreiche Links möchten Sie vielleicht einen Blick auf zu nehmen. Dies sind einige nützliche Dokumentation Führer. Die URLs sind massiv, so dass sie verkürzt. Das erste ist die gesamte Bibliothek der Dokumentation. Es gibt wenig Suchleisten, also, wenn Sie mit der Eingabe-Taste starten wird es anfangen, Ihnen alle Informationen, die über all die Dinge, die Sie mit einer Taste zu tun. Ich habe auch die Table View Programming Guide enthalten. Es behandelt Tabellenansichten in viel mehr ins Detail, wie man Dinge tun, wie dynamisch Zellen hinzufügen oder bearbeiten Zellen oder entfernen. Es gibt viel der Probe apps von Apple, die Ihnen zeigen, wie Sie das tun, und schließlich ist diese letzte die Human Interface Guidelines, und dies ist im Grunde einige Diskussionen über UI-Komponenten, Dinge wie nicht machen eine Schaltfläche, die 4 Pixel um 4 Pixel ist. Das ist eine schlechte Idee, und andere Dinge, die Apple Ihnen tun will für gutes Design zu fördern. Irgendwelche letzten Fragen, bevor wir landen? Alles klar, auf jeden Fall fühlen Sie sich frei, um-wir gehen auf spezielle Etiketten auf zu diskutieren. Wir werden ein iOS einen haben, also auf jeden Fall fühlen Sie sich frei, um das zu nutzen. Wenn Sie mit Ihren Klassenkameraden an Projekten arbeiten oder helfen herauszufinden, einige zufällige iOS Zeug fühlen Sie sich frei, mich zu mailen, und definitiv durchzulesen den gesamten Code online, weil nur im Interesse der Zeit, dass wir solche über die weitere beschönigt feinere Details der Dinge. Aber wenn nicht, dann viel Glück auf Ihrem iOS-Projekte, und ich hoffe, wir haben ein großer Zustrom von Apps im App Store. [CS50.TV]