Praktikum ios-entwicklung. Sommersemester 2017 Prof. Dr. Linnhoff-Popien Lenz Belzner, Kyrill Schmid

Ähnliche Dokumente
Leseprobe. Jan Tittel, Jochen Baumann. Apps für ios entwickeln. Am Beispiel einer realen App. ISBN (Buch):

Objective-C CheatSheet

5.3 Verwendung der integrierten Datenbank SQLite

SENSOREN MOBILER DEVICES

AK Medientechnologien Hello World. Josef Kolbitsch

Seminararbeit: iphone Entwicklung von 0 auf 100. Von Philipp Koulen

Programmierung für mobile Endgeräte

Mac Desktop Entwicklung

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern

Programmierung für mobile Endgeräte

Design Patterns 2. Model-View-Controller in der Praxis

iphone OS Applikationsentwicklung auf mobilen Endgeräten

Software Engineering II

Glossar. Launching auf.

Programmieren für iphone und ipad

Web-Anwendungsentwicklung mit dem Delivery Server

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Erstellen einer iphone-applikation zur Anzeige von News, die über das Internet übermittelt werden

Model-View-ViewModel (MVVM)

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Thema 6: Grundlagen von Propertys

Ich programmier mir eine App

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Programmierung für mobile Endgeräte

Mac OS X Programmierung

AK Medientechnologien 05 Delegation

Objective-C für Eclipse-Entwickler Gegenüberstellungen von Syntax, Konzepten, Patterns.

Online Kurs Entwicklung der Apps auf iphone und ipad

3.9 Grundelemente einer Benutzeroberfläche

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Software-Entwicklung für Android und ios

Software Engineering II

Cross-Platform Mobile mit.net

Android Processes & Services

Business Applika-onen schnell entwickeln JVx Framework - Live!

Web 2. Gang. Python User Group Köln Christopher Arndt

Holger Hinzberg. iphone Apps programmieren. Praxiseinstieg. mitp

Java - Webapplikationen

Bei einer deutschen Installation muß man den Window Server und pbs aus StartUp in Autostart verlagern sowie die Datei

1 Einführung... 1 Swift... 1 Objective-C ohne C?... 3 Vorteile von Swift... 3 Die Plattform kennenlernen... 5

Software-Entwicklung für Android und ios

Programmieren für iphone und ipad

Apple Train the Trainer 10 App Store Submission. Josef Kolbitsch

Auszug aus JAX-WS Folien

TDD für iphone OS. xpdays Tammo Freese

Übersicht GUI PyQT TU Dresden, Sommerkurs Python GUI Folie 1 von XYZ

Case Study

Erstellung von Bibliotheken in CoDeSys V3

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Content-Management-Systeme

Übungen zur Android Entwicklung

JSF (JavaServer Faces) Erstellen einer Webseite

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober FH-Gieÿen-Friedberg Android Praktikum

XAML Extensible Application Markup Language. Manuel Naujoks (IB3)

Cocoa Touch und Objective C

Einführung in Android. 9. Dezember 2014

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Java Beans ( )

Schritt 4: Hallo Enterprise Bean

Tammo Freese Freiberuflicher Softwareentwickler. CoreBluetooth ios kommunikativ

Java Beans.

Gestaltung von App-Oberflächen (UI) mit Core Animation

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Programmierung für mobile Endgeräte

Ruby on Rails. Thomas Baustert Ralf Wirdemann Alternative zur Web-Entwicklung mit Java?

Refactoring Rails Applications. Mathias Meyer und Jonathan Weiss, Peritor GmbH

Grundlagen von Objective-C

Inhaltsverzeichnis. TeiM. V E E.l E.2 E.3 E.4. Vorwort von Stefan Tilkov Einleitung Zielgruppe Über dieses Buch Konventionen Dank

Ant in Eclipse Starthilfe

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

Chair of Software Engineering. Bezieher SUBSCRIBERS Ereignis Erzeuger (zb GUI) Chair of Software Engineering. Save_file ROUTINE

Klassen in Java. Klassen

Ein erster Blick. Eclipse und Debugging. Anlegen von Projekten. Wissenswertes...

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Programmieren in Java

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Beispiel droidremoteppt

versus Christian Grobmeier

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

ORACLE Business Components for Java (BC4J) Marco Grawunder

iphone-apps entwickeln: Applikationen für iphone, ipad und ipod touch programmieren

Klassenbeziehungen & Vererbung

WhiteStarUML Tutorial

Praktikum Software Engineering

Objektorientierte Programmierung

C# im Vergleich zu Java

Szenario 3: Service mit erweiterter Schnittstelle

Eine Anwendung mit InstantRails 1.7

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

JDroidLib mit Eclipse (Mac/Linux/Windows)

Java Einführung Methoden in Klassen

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung

Apps programmieren für ios

Leseprobe. »Hello iphonemodels, Layer, Animationen« Inhalt. Index. Die Autoren. Leseprobe weiterempfehlen.

Transkript:

Praktikum ios-entwicklung Sommersemester 2017 Prof. Dr. Linnhoff-Popien Lenz Belzner, Kyrill Schmid

MODEL-VIEW-CONTROLLER 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 2

Model-View-Controller (MVC) Controller Model View Design-Pattern zur Strukturierung von Source Code Trennung dient der Wiederverwendbarkeit/Austauschbarkeit von Code Aufteilung von Objekten in drei unterschiedliche Gruppen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 3

Model-View-Controller (MVC) Controller Model View Model: Worum handelt es sich bei der Anwendung? Enthält Daten bzw. Datenmodell Ist unabhängig von der eigentlichen Darstellung! 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 4

Model Objekte Kapselt Daten, bietet Zugriff auf Daten und implementiert die Logik 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 5

Model-View-Controller (MVC) Controller Model View View: Darstellung des Model Schnittstelle zum Benutzer (Interaktion) Keine Verarbeitung von Daten! 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 6

View Objekte View Objekte sind i.d.r. Objekte die User sieht 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 7

Model-View-Controller (MVC) Controller Model View Controller: Kontrolliert die Präsentation des Model gegenüber dem Nutzer Vermittlung zwischen Datenmodell und Darstellung (Logik der Darstellung!) Auswertung von Benutzerinteraktionen (View) Manipulation von Daten (Model) Zu jeder View existiert genau ein Controller 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 8

Controller Objekte Verbindungsglied für View- und Model Objekte Übernehmen Setup und koordinative Aufgaben Interpretieren User Actions und kommuniziert Veränderungen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 9

Model-View-Controller (MVC) Controller Model View Welche Art der Kommunikation zwischen den drei Gruppen ist erlaubt? 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 10

Model-View-Controller (MVC) Controller Model View Controller kann immer direkt auf sein Model zugreifen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 11

Model-View-Controller (MVC) Controller Outlet Model View Controller kann direkt Nachrichten an seine View senden 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 12

Model-View-Controller (MVC) Controller Outlet Model View Model und View sollten niemals miteinander kommunizieren! 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 13

Model-View-Controller (MVC) Controller Outlet? Model View Wie werden Interaktionen des Benutzers dem Controller kommuniziert? Kann die View Nachrichten an den Controller senden? 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 14

Model-View-Controller (MVC) Target Controller Outlet Action Model View Controller kann der View sich selbst als Zielobjekt (Target) bestimmter Interaktionen mitteilen Kommunikation von Ereignissen erfolgt als Aktion (Action) 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 15

Model-View-Controller (MVC) Target Controller Outlet Model should will did View Action Manchmal müssen sich eine View und ihr Controller unabhängig von Nutzerinteraktionen synchronisieren 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 16

Model-View-Controller (MVC) will should did Target Controller Outlet Action Model View Synchronisation erfolgt über Delegation (Delegate) Delegates werden über Protocols realisiert (ähnlich der Realisierung eines Interface in Java) Beispiel: UITableViewDelegate Protocol, tableview:didselectrowatindexpath:) 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 17

Model-View-Controller (MVC) will should did Target Controller Outlet Action Model data at View count Views besitzen nicht die Daten (Model), die sie darstellen Views verwenden ebenfalls ein Protocol, wenn sie Daten benötigen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 18

Model-View-Controller (MVC) will should did at data Target Controller Outlet count Action Model View Fast immer stellt der Controller die Datenquelle dar (nicht das Model!) Nur der Controller interpretiert und formatiert Daten des Modells für die View! Beispiel: UITableViewDataSource, tableview:cellforrowatindexpath: 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 19

Model-View-Controller (MVC)? will should did at data Target Controller Outlet count Action Model View Frage 1: Kann das Model dem Controller Nachrichten senden? 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 20

Model-View-Controller (MVC) will should did at data Target Controller Outlet count Action Model View Frage 1: Kann das Model dem Controller Nachrichten senden? Nein! Model muss unabhängig von (der Logik) der Darstellung sein 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 21

Model-View-Controller (MVC) will should did at data Target Controller Outlet count Action Model View Frage 2: Wie werden Modifikationen an den Daten des Model dem Controller mitgeteilt bzw. in der View aktualisiert? 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 22

Model-View-Controller (MVC) Notification & KVO will should did at data Target Controller Outlet count Action Model View Frage 2: Wie werden Modifikationen an den Daten des Model dem Controller mitgeteilt bzw. in der View aktualisiert? Verwendung eines Broadcast Mechanismus (Notifications und Key-Value- Observing (KVO)) Controller "lauschen" nach interessanten Nachrichten bzw. Veränderungen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 23

Model-View-Controller (MVC) Kommunikation erfolgt über verschiedene Mechanismen (Delegation, KVO) 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 24

Model-View-Controller (MVC) Komplexe Programme entstehen durch die Kombination mehrerer MVC-Gruppen 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 25

ERSTE APP IN OBJECTIVE-C (DEMO) 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 26

DEMO: MyQuiz Create New Xcode Project 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 27

DEMO: MyQuiz File New Project Single View Application Erzeugt neues Projekt mit genau einer View 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 28

DEMO: MyQuiz Setzen von Product Name und Organization Identifier 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 29

Project Navigator DEMO: MyQuiz Zeigt alle Dateien, aus denen sich ein Projekt zusammensetzt Dateien können in Ordnern organisiert werden Die Ordnerstruktur ist unabhängig von der Struktur auf dem Dateisystem! Für das Template "Single View Application" wird automatisch eine View (in Main.storyboard) und ein Default Controller erstellt! 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 30

DEMO: MyQuiz // ViewController.h (Automatisch generierter Code) #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end // ViewController.m (Automatisch generierter Code) #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewdidload { [super viewdidload]; } - (void)didreceivememorywarning { [super didreceivememorywarning]; } @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 31

DEMO: MyQuiz Die View wird innerhalb eines Storyboards ebenfalls automatisch angelegt 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 32

Editieren der View DEMO: MyQuiz Mit Hilfe der Object-Library lassen sich sehr einfach die grafischen Elemente platzieren 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 33

DEMO: MyQuiz Ausführen bringt bisher nicht das gewünschte Ergebnis... Problem: Im Storyboard werden durch das Platzieren der UI-Elemente nicht-adaptive Layout-Constraints vergeben 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 34

DEMO: MyQuiz Lösung: Auflösen der Konflikte über explizite Vergabe adaptiver Layout Constraints (siehe Hausaufgabe) 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 35

DEMO: MyQuiz Hinzufügen eines Model File New File Cocoa Touch Class QuestionPool: dient der Erzeugung und dem Zugriff auf Fragen und Antworten 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 36

DEMO: MyQuiz 1. Weg: Implementierung unter direkter Verwendung von Instanzvariablen #import <Foundation/Foundation.h> @interface QuestionPool : NSObject { NSArray* _questions; NSArray* _answers; } // Getter-Methoden für den Zugriff auf Instanzvariablen -(NSArray*)questions; -(NSArray*)answers; @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 37

DEMO: MyQuiz 1. Weg: Implementierung unter direkter Verwendung von Instanzvariablen #import "QuestionPool.h" @implementation QuestionPool - (id)init { self = [super init]; if (self) { _questions = @[@"Wie heißt die Landeshauptstadt von Bayern?", @"Wie viele Einwohner hat München?", @"Wie hoch ist die Frauenkirche?"]; _answers = @[@"München", @"1,4 Millionen", @"98,67 Meter"]; } return self; } - (NSArray *)answers { return _answers; } -(NSArray*)quesions { return _questions; } @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 38

DEMO: MyQuiz 2. Weg: Implementierung mit Hilfe von Properties // QuestionPool.h #import <Foundation/Foundation.h> @interface QuestionPool : NSObject @property (readonly, nonatomic,strong) NSArray *questions; @property (readonly, nonatomic,strong) NSArray *answers; @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 39

DEMO: MyQuiz 2. Weg: Implementierung mit Hilfe von Properties Lazy Instantiation: Alles so spät wie möglich... @implementation QuestionPool -(id)init{ self = [super init]; if (self){ _questions = @[@ Wie heißt die Landeshauptstadt von Bayern?, @ Wie viele Einwohner hat München?, @ Wie hoch ist die Frauenkirche? ]; _answers = @[@ München, @ 1,5 Millionen, @ 98,67 Meter ]; } return self; @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 40

DEMO: MyQuiz Verbinden von Model und Controller // ViewController.m #import "ViewController.h" #import "QuestionPool.h" @interface ViewController () @property (strong, nonatomic) QuestionPool *questionpool; @property (nonatomic) NSUInteger currentquestionindex; @end @implementation ViewController [ ] @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 41

Instanziieren des Model DEMO: MyQuiz Lazy Instantiation: Alles so spät wie möglich... (mehr zu viewwillappear: später) // ViewController.m #import "ViewController.h" #import "QuestionPool.h" @interface ViewController () @property (strong,nonatomic) QuestionPool *questionpool; @property (nonatomic) NSUInteger currentquestionindex; @end @implementation ViewController -(void)viewwillappear:(bool)animated { if(!self.questionpool) { self.questionpool = [QuestionPool new]; } } @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 42

DEMO: MyQuiz Properties für UI Elemente Erzeugen der Properties für UIButton- und UITextView-Instanzen (IBOutlet ist nur ein typdef auf void und hilft dem Compiler beim Erzeugen der Links zwischen Header- und Storyboard- / XIB-Files) // ViewController.m #import "ViewController.h" #import "QuestionPool.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextView *questiontextview; @property (weak, nonatomic) IBOutlet UITextView *answertextview; @property (weak, nonatomic) IBOutlet UIButton *questionbutton; @property (weak, nonatomic) IBOutlet UIButton *answerbutton; @property QuestionPool *questionpool; @property (nonatomic) NSUInteger currentquestionindex; @end [ ] 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 43

DEMO: MyQuiz Deklaration der Methoden (Actions) // ViewController.m #import "ViewController.h" #import "QuestionPool.h" @interface ViewController () [ ] @end @implementation ViewController -(IBAction)showNextQuestion {} -(IBAction)showAnswer {} @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 44

DEMO: MyQuiz Verbinden von Controller und View (Outlets und Actions) Mehrere Methoden möglich 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 45

DEMO: MyQuiz Verbinden von Controller und View (Outlets und Actions) Mehrere Methoden möglich 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 46

DEMO: MyQuiz Verbinden von Controller und View (Outlets und Actions) Mehrere Methoden möglich 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 47

DEMO: MyQuiz Inhalt des Connections Inspector nachdem alle Verbindungen existieren: 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 48

DEMO: MyQuiz Implementierung der Methoden (Actions) // ViewController.m @implementation ViewController -(IBAction)showNextQuestion { self.questionbutton.enabled = NO; self.answerbutton.enabled = YES; self.questiontextview.text = self.questionpool.questions[self.currentquestionindex]; } -(IBAction)showAnswer { self.questionbutton.enabled = YES; self.answerbutton.enabled = NO; self.answertextview.text = self.questionpool.answers[self.currentquestionindex]; [self incrementquestionindex]; } -(void)incrementquestionindex { self.currentquestionindex = (self.currentquestionindex+1) % [self.questionpool.questions count]; } @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 49

Problem: DEMO: MyQuiz Man kann Antwort klicken, bevor die Frage gestellt wurde Lösung: // ViewController.m [ ] @implementation ViewController [ ] -(void)viewdidload { self.answerbutton.enabled = NO; } [ ] @end 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 50

DEMO: MyQuiz Ergebnis: 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 51

Anwendungen ohne Storyboard Storyboards sind schön, aber... führen zu Problemen, wenn mehre Personen parallel an der UI arbeiten überflüssig, falls man auch die UI rein programmatisch umsetzen möchte Alternativ kann man die UI mit Hilfe von XIB-Dateien implementieren Pro View eine XIB-Datei 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 52

Erzeugen eines neuen Projekts: Anwendung ohne Storyboard Beispiel File New Project Single View Application 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 53

Project Navigator Anwendung ohne Storyboard Beispiel Löschen der Datei "Main.storyboard" Project Navigator General Deployment Info Löschen des Inhalts von "Main Interface" 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 54

Project Navigator Anwendung ohne Storyboard Beispiel Anpassen der Datei "AppDelegate" import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var vc:viewcontroller? func application(application: UIApplication, didfinishlaunchingwithoptions launchoptions: [NSObject: AnyObject]?) -> Bool { window = UIWindow(frame: UIScreen.mainScreen().bounds) window!.backgroundcolor = UIColor.redColor() vc = ViewController(nibName: "ViewController", bundle: nil) window!.rootviewcontroller = vc window!.makekeyandvisible() return true } func applicationwillresignactive(application: UIApplication) {} func applicationdidenterbackground(application: UIApplication) {} func applicationwillenterforeground(application: UIApplication) {} func applicationdidbecomeactive(application: UIApplication) {} func applicationwillterminate(application: UIApplication) {} } 17.05.201 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 55

Erzeugen einer XIB-Datei File New File User Interface View Name "ViewController" Anwendung ohne Storyboard Beispiel 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 56

Anpassen der XIB-Datei Über das Setzen des "File's Owner" wird eine Verbindung zwischen der Impementierung (ViewController.swift) und der UI (ViewController.xib) hergestellt Im Editor Click auf "File's Owner" Anwendung ohne Storyboard Beispiel Im "Identity Inspector" Setzen der "Custom Class" auf "ViewController" 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 57

Anpassen der XIB-Datei Im "Connections Inspector" Anwendung ohne Storyboard Beispiel Setzen des View Outlets auf die View Ergebnis: 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 58

Anwendung ohne Storyboard Beispiel Hinzufügen von UI Komponenten wie gehabt... 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 59

Anwendung ohne Storyboard Beispiel Ergebnis: 17.05.2017 Lenz Belzner, Kyrill Schmid - ios-praktikum - SoSe 17 60