Building GUIs with UIKit. Kevin Cathey

Size: px
Start display at page:

Download "Building GUIs with UIKit. Kevin Cathey"

Transcription

1 Building GUIs with UIKit Kevin Cathey

2 Building GUIs with UIKit acm.uiuc.edu/macwarriors/devphone

3 Building GUIs with UIKit What is UIKit? acm.uiuc.edu/macwarriors/devphone

4 Building GUIs with UIKit What is UIKit? Model-view-controller acm.uiuc.edu/macwarriors/devphone

5 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? acm.uiuc.edu/macwarriors/devphone

6 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI acm.uiuc.edu/macwarriors/devphone

7 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

8 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

9 UIKit

10 UIKit A framework providing many common classes for user interface design.

11 UIKit A framework providing many common classes for user interface design. Any user interface framework needs to: Present data to the user. Respond to user input.

12 UIKit A framework providing many common classes for user interface design. Any user interface framework needs to: Present data to the user. Respond to user input. It s all about events.

13 UIKit

14 UIKit How UIKit accomplishes this: Defines objects. Defines how they behave. Defines how they interact.

15 UIKit How UIKit accomplishes this: Defines objects. Defines how they behave. Defines how they interact. All classes in UIKit start with UI.

16 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

17 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

18 MVC Motivation

19 MVC Motivation Remember, we have to:

20 MVC Motivation Remember, we have to: Present data to the user.

21 MVC Motivation Remember, we have to: Present data to the user. Respond to user input.

22 MVC Motivation Remember, we have to: Present data to the user. Respond to user input. How do we create a system that does the above and:

23 MVC Motivation Remember, we have to: Present data to the user. Respond to user input. How do we create a system that does the above and: Allows data code to be modular (work with any view)?

24 MVC Motivation Remember, we have to: Present data to the user. Respond to user input. How do we create a system that does the above and: Allows data code to be modular (work with any view)? Allows view code to be modular (work with any data model)?

25 Model - View - Controller City Cupertino Glendale Los Angeles Palo Alto San Diego San Francisco Santa Clara Santa Monica Population 53, ,979 3,834,340 58,246 1,266, , ,756 87,212 Model

26 Model - View - Controller City Cupertino Glendale Los Angeles Palo Alto San Diego San Francisco Santa Clara Santa Monica Population 53, ,979 3,834,340 58,246 1,266, , ,756 87,212 Model View

27 Model - View - Controller City Cupertino Glendale Los Angeles Palo Alto San Diego San Francisco Santa Clara Santa Monica Population 53, ,979 3,834,340 58,246 1,266, , ,756 87,212 Model View

28 Model - View - Controller City Cupertino Glendale Los Angeles Palo Alto San Diego San Francisco Santa Clara Santa Monica Population 53, ,979 3,834,340 58,246 1,266, , ,756 87,212 Model Controller View

29 The Controller

30 The Controller Knows how to talk to the model and the view.

31 The Controller Knows how to talk to the model and the view. Passes data from the model to the view as needed.

32 The Controller Knows how to talk to the model and the view. Passes data from the model to the view as needed. Updates the model when the view changes.

33 The Controller Knows how to talk to the model and the view. Passes data from the model to the view as needed. Updates the model when the view changes. Usually specific to the model and the view.

34 Controllers Comparative number of controllers Data Models Views Controllers

35 Controllers Comparative number of controllers Data Models Views Controllers

36 Controllers Comparative number of controllers Data Models Views Controllers

37 Controllers Comparative number of controllers Data Models Views Controllers

38 The Controller

39 The Controller Can handle interactions between views (one controller can manage many views).

40 The Controller Can handle interactions between views (one controller can manage many views). Controller has a to-many relationship with views (but usually one-to-one).

41 The Controller Can handle interactions between views (one controller can manage many views). Controller has a to-many relationship with views (but usually one-to-one). Views have a one-to-one relationship with a view controller.

42 UIKit and MVC

43 UIKit and MVC Data Models Foundation Classes Custom Classes

44 UIKit and MVC Data Models Foundation Classes Custom Classes Views UIView UIButton UITableView UITabBar UISlider

45 UIKit and MVC Data Models Foundation Classes Custom Classes Views UIView UIButton UITableView UITabBar UISlider Controllers UIViewController UINavigationController UITabBarController UITableViewController

46 How do I make them all?

47 How do I make them all? Data Models Write all in code. We already looked at this.

48 How do I make them all? Data Models Write all in code. We already looked at this. Views Create in Interface Builder. Save as a Nib file.

49 How do I make them all? Data Models Write all in code. We already looked at this. Views Create in Interface Builder. Save as a Nib file. Controllers Setup basics in Interface Builder. Write all the behaviors and interaction with data in code.

50 As you create your graphical user interfaces, you must follow the Human Interface Guidelines (the HIG )

51 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

52 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

53 Interface Builder An application that allows you to build GUIs with drag and drop and WYSIWYG. Build object graph by dragging out objects from the library. Customize objects. Setup interactions between code and UI with connections. Save everything to a Nib file.

54 Nib Files After you create your object graph in IB, you freeze it. This process is called archiving (remember NSCoder protocol?) When your application runs, it unfreezes or unarchives the object graph.

55 Nib Files An example archiving UISwitch value = on frame = ((x,y), (w,h))

56 Nib Files An example archiving Hit Save UISwitch value = on frame = ((x,y), (w,h))

57 Nib Files An example archiving Hit Save UISwitch value = on frame = ((x,y), (w,h)) encodewithcoder:

58 Nib Files An example archiving UISwitch value = on frame = ((x,y), (w,h)) Hit Save encodewithcoder:

59 Nib Files An example unarchiving

60 Nib Files An example unarchiving

61 Nib Files An example unarchiving initwithcoder:

62 Nib Files An example unarchiving initwithcoder: UISwitch value = on frame = ((x,y), (w,h))

63 Actually it s more complicated The develop time XIB file

64 Actually it s more complicated The develop time XIB file Hit Save <object /> encodewithcoder: Develop Time

65 Actually it s more complicated The develop time XIB file Hit Save <object /> encodewithcoder: encodewithcoder: Build Time Develop Time

66 Actually it s more complicated The develop time XIB file Hit Save <object /> encodewithcoder: encodewithcoder: initwithcoder: Runtime Build Time Develop Time

67 The XIB File

68 The XIB File Like a Nib file, but plain-text.

69 The XIB File Like a Nib file, but plain-text. SCM diffable.

70 The XIB File Like a Nib file, but plain-text. SCM diffable. Also contains metadata specific to Interface Builder.

71 The XIB File Like a Nib file, but plain-text. SCM diffable. Also contains metadata specific to Interface Builder. Flattened into binary at compile-time.

72 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

73 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

74 Connections

75 Connections How we connect code and UI.

76 Connections How we connect code and UI. Outlets Connecting code to UI. Instance variables in a class. Get filled in at runtime.

77 Connections How we connect code and UI. Outlets Connecting code to UI. Instance variables in a class. Get filled in at runtime. Actions Connection UI to code. Method on a class called by UI.

78 Outlets Use IBOutlet keyword on instance variable or property. Flag for Interface Builder s parser.

79 Outlets Use IBOutlet keyword on instance variable or property. Flag for Interface Builder s parser. Definition of an outlet: #define IBOutlet

80 Outlets Use IBOutlet keyword on instance variable or property. Flag for Interface Builder s parser. Definition of an outlet: #define IBOutlet Declaring outlet on instance Foo : Bar { IBOutlet UIView *myview;

81 Outlets Use IBOutlet keyword on instance variable or property. Flag for Interface Builder s parser. Definition of an outlet: #define IBOutlet Declaring outlet on instance Foo : Bar { IBOutlet UIView *myview; Declaring outlet on retain) IBOutlet UIView *myview;

82 Outlets Use IBOutlet keyword on instance variable or property. Flag for Interface Builder s parser. Definition of an outlet: #define IBOutlet Declaring outlet on instance Foo : Bar { IBOutlet UIView *myview; Declaring outlet on retain) IBOutlet UIView *myview; Very important to set retain attribute

83 Actions Use IBAction as return type for method. One argument of type id (this is who sent the action). Flag for Interface Builder s parser.

84 Actions Use IBAction as return type for method. One argument of type id (this is who sent the action). Flag for Interface Builder s parser. Definition of an action: #define IBAction void

85 Actions Use IBAction as return type for method. One argument of type id (this is who sent the action). Flag for Interface Builder s parser. Definition of an action: #define IBAction void Declaring an Foo : Bar { } -

86 Connecting outlets & actions in IB After you ve defined actions and outlets in header, do either:

87 Connecting outlets & actions in IB After you ve defined actions and outlets in header, do either: Old-school method Hold control, drag from source to destination

88 Connecting outlets & actions in IB After you ve defined actions and outlets in header, do either: Old-school method Hold control, drag from source to destination Using connection display Right-click on object. Then for outlet/action, drag to other object.

89 Demo Hello World

90 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

91 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

92 UIViewController You will be creating many subclasses of this. Has view outlet which is the view it principally manages. Can load view from another Nib file using Nib Name property in Interface Builder (or nibname method in code). Common methods to override in subclasses:

93 UIViewController You will be creating many subclasses of this. Has view outlet which is the view it principally manages. Can load view from another Nib file using Nib Name property in Interface Builder (or nibname method in code). Common methods to override in subclasses: Responding to memory warnings: - (void)didreceivememorywarning;

94 UIViewController You will be creating many subclasses of this. Has view outlet which is the view it principally manages. Can load view from another Nib file using Nib Name property in Interface Builder (or nibname method in code). Common methods to override in subclasses: Responding to memory warnings: - (void)didreceivememorywarning; Allowing autorotation: // To always allow autorotation... - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation { return YES; }

95 UIViewController You will be creating many subclasses of this. Has view outlet which is the view it principally manages. Can load view from another Nib file using Nib Name property in Interface Builder (or nibname method in code). Common methods to override in subclasses: Responding to memory warnings: - (void)didreceivememorywarning; Allowing autorotation: // To always allow autorotation... - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation { return YES; } Doing final setup of view after it loads from Nib: - (void)viewdidload;

96 UITabBarController Has tabs, each tab being a view controller. Don t subclass. For each tab (view controller), load its UI from external Nib file otherwise all views instantiated immediately.

97 UINavigationController

98 UINavigationController Has stack of view controllers.

99 UINavigationController Has stack of view controllers. To move right, push a view controller.

100 UINavigationController Has stack of view controllers. To move right, push a view controller. To move left, pop a view controller.

101 UINavigationController Has stack of view controllers. To move right, push a view controller. To move left, pop a view controller. Don t subclass.

102 UINavigationController Has stack of view controllers. To move right, push a view controller. To move left, pop a view controller. Don t subclass. Usually root controller or contained by a tab bar controller.

103 UINavigationController Has stack of view controllers. To move right, push a view controller. To move left, pop a view controller. Don t subclass. Usually root controller or contained by a tab bar controller. Pushing a view controller: [mynavcontroller pushviewcontroller:nextcontroller animated:yes];

104 UINavigationController Has stack of view controllers. To move right, push a view controller. To move left, pop a view controller. Don t subclass. Usually root controller or contained by a tab bar controller. Pushing a view controller: [mynavcontroller pushviewcontroller:nextcontroller animated:yes]; Popping a view controller (usually don t have to call this): [mynavcontroller popviewcontrolleranimated:yes];

105 UITableViewController Manages as a table view s data source and delegate. Subclass and override at least these methods:

106 UITableViewController Manages as a table view s data source and delegate. Subclass and override at least these methods: Number of rows in a given table view section: - (NSInteger)tableView:(UITableView *)tableview numberofrowsinsection:(nsinteger)section;

107 UITableViewController Manages as a table view s data source and delegate. Subclass and override at least these methods: Number of rows in a given table view section: - (NSInteger)tableView:(UITableView *)tableview numberofrowsinsection:(nsinteger)section; Provide a row of content: - (NSInteger)tableView:(UITableView *)tableview numberofrowsinsection:(nsinteger)section;

108 UIView

109 UIView Represents what you actually see on screen.

110 UIView Represents what you actually see on screen. This is where the drawing occurs.

111 UIView Represents what you actually see on screen. This is where the drawing occurs. The first to receive user events if the view doesn t need the event, it sends it to its view controller.

112 UIView Represents what you actually see on screen. This is where the drawing occurs. The first to receive user events if the view doesn t need the event, it sends it to its view controller. Subclass only for customization of one of those two roles.

113 UIView

114 UIView Views have a superview (except the root view, also called the window) and subviews.

115 UIView Views have a superview (except the root view, also called the window) and subviews. Drawing is clipped to its superview.

116 UIView Views have a superview (except the root view, also called the window) and subviews. Drawing is clipped to its superview. Size and location of a view is called its frame.

117 UIView Views have a superview (except the root view, also called the window) and subviews. Drawing is clipped to its superview. Size and location of a view is called its frame. The bounds of a view are usually the same as its frame, except with the location always at (0,0).

118 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

119 Building GUIs with UIKit What is UIKit? Model-view-controller What really is a Nib file? Connecting code to UI Tour of common UIKit classes acm.uiuc.edu/macwarriors/devphone

120 Q&A About These Slides If you need to reference the content of this presentation, these slides will be posted on our website, listed below: acm.uiuc.edu/macwarriors/devphone

121

122

Designing iphone Applications

Designing iphone Applications Designing iphone Applications 4 Two Flavors of Mail 5 Organizing Content 6 Organizing Content 6 Organizing Content 6 Organizing Content 6 Organizing Content Focus on your user s data 6 Organizing Content

More information

View Controllers CPRE 388

View Controllers CPRE 388 View Controllers CPRE 388 View Controllers Manage views in model view controller design template. Many types: custom view controller; container view controller; modal view controller. Custom View controllers

More information

Structuring an App Copyright 2013 Apple Inc. All Rights Reserved.

Structuring an App Copyright 2013 Apple Inc. All Rights Reserved. Structuring an App App Development Process (page 30) Designing a User Interface (page 36) Defining the Interaction (page 42) Tutorial: Storyboards (page 47) 29 App Development Process Although the task

More information

OVERVIEW. Why learn ios programming? Share first-hand experience. Identify platform differences. Identify similarities with.net

OVERVIEW. Why learn ios programming? Share first-hand experience. Identify platform differences. Identify similarities with.net OVERVIEW Why learn ios programming? Share first-hand experience. Identify platform differences. Identify similarities with.net Microsoft MVP for 4 years C#, WinForms, WPF, Silverlight Joined Cynergy about

More information

Assignment III: Graphing Calculator

Assignment III: Graphing Calculator Assignment III: Graphing Calculator Objective The goal of this assignment is to reuse your CalculatorBrain and CalculatorViewController objects to build a Graphing Calculator. By doing this, you will gain

More information

CSC 581: Mobile App Development Spring 2018

CSC 581: Mobile App Development Spring 2018 CSC 581: Mobile App Development Spring 2018 Unit 2: Introduciton to the UIKit UIKit, UIViews UIControl subclasses 1 UIKit the UIKit is a code framework for building mobile apps the foundational class for

More information

View Concepts. iphone Application Programming Lecture 4: User Interface Design. SDK provide many types of Views to show your content

View Concepts. iphone Application Programming Lecture 4: User Interface Design. SDK provide many types of Views to show your content View Concepts iphone Application Programming Lecture 4: User Interface Design SDK provide many types of Views to show your content At run-time Views are organized as a tree Chat Wacharamanotham Media Computing

More information

MVC & Onwards. CS 442: Mobile App Development Michael Saelee

MVC & Onwards. CS 442: Mobile App Development Michael Saelee MVC & Onwards CS 442: Mobile App Development Michael Saelee Agenda - Recap: view-controller communication - Delegation as a general pattern - Observer pattern - Controller responsibilities & MVC - Multiple

More information

Intro to Native ios Development. Dave Koziol Arbormoon Software, Inc.

Intro to Native ios Development. Dave Koziol Arbormoon Software, Inc. Intro to Native ios Development Dave Koziol Arbormoon Software, Inc. About Me Long time Apple Developer (20 WWDCs) Organizer Ann Arbor CocoaHeads President & ios Developer at Arbormoon Software Inc. Wunder

More information

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5

iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 iphone App Basics iphone and ipod touch Development Fall 2009 Lecture 5 Questions? Announcements Assignment #1 due this evening by 11:59pm Remember, if you wish to use a free late you must email me before

More information

InterfaceBuilder and user interfaces

InterfaceBuilder and user interfaces ES3 Lab 2 InterfaceBuilder and user interfaces This lab InterfaceBuilder Creating components Linking them to your code Adding buttons, labels, sliders UITableView Creating a tableview Customizing cells

More information

View Concepts. iphone Application Programming Lecture 4: User Interface Design. SDK provide many types of Views to show your content

View Concepts. iphone Application Programming Lecture 4: User Interface Design. SDK provide many types of Views to show your content View Concepts iphone Application Programming Lecture 4: User Interface Design SDK provide many types of Views to show your content At run-time Views are organized as a tree Chat Wacharamanotham Media Computing

More information

CS193P: HelloPoly Walkthrough

CS193P: HelloPoly Walkthrough CS193P: HelloPoly Walkthrough Overview The goal of this walkthrough is to give you a fairly step by step path through building a simple Cocoa Touch application. You are encouraged to follow the walkthrough,

More information

User Experience: Windows & Views

User Experience: Windows & Views View Controller Programming Guide for ios User Experience: Windows & Views 2011-01-07 Apple Inc. 2011 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval

More information

Mobile Application Development

Mobile Application Development Mobile Application Development Lecture 16 Controllers of View Controllers 2013/2014 Parma Università degli Studi di Parma Lecture Summary Multiple MVCs UINavigationController Segues UITabBarController

More information

Implementing UI Designs in Interface Builder

Implementing UI Designs in Interface Builder Developer Tools #WWDC15 Implementing UI Designs in Interface Builder Session 407 Kevin Cathey Interface Builder Engineer Tony Ricciardi Interface Builder Engineer 2015 Apple Inc. All rights reserved. Redistribution

More information

ios Development Lecture 3 Controllers of View Controllers Ing. Simone Cirani

ios Development Lecture 3 Controllers of View Controllers Ing. Simone Cirani ios Development Lecture 3 Controllers of View Controllers Ing. Simone Cirani email: simone.cirani@unipr.it http://www.tlc.unipr.it/cirani Corso IFTS Cisita ios Development 2014 Parma Università degli Studi

More information

ITP 342 Mobile App Dev. Table Views

ITP 342 Mobile App Dev. Table Views ITP 342 Mobile App Dev Table Views Table Views The most common mechanism used to display lists of data to the user Highly configurable objects that can be made to look practically any way you want them

More information

Assignment III: Graphing Calculator

Assignment III: Graphing Calculator Assignment III: Graphing Calculator Objective The goal of this assignment is to reuse your CalculatorBrain and CalculatorViewController objects to build a Graphing Calculator for iphone and ipad. By doing

More information

Widget Tour. iphone and ipod touch Development Fall 2009 Lecture 7

Widget Tour. iphone and ipod touch Development Fall 2009 Lecture 7 Widget Tour iphone and ipod touch Development Fall 2009 Lecture 7 Questions? Announcements Assignment #2 due Tonight by 11:59pm Today s Topics Controls Buttons Switches Sliders Segmented Controls Text

More information

ITP 342 Mobile App Dev. Table Views

ITP 342 Mobile App Dev. Table Views ITP 342 Mobile App Dev Table Views Tables A table presents data as a scrolling, singlecolumn list of rows that can be divided into sections or groups. Use a table to display large or small amounts of information

More information

lecture 10 UI/UX and Programmatic Design cs : spring 2018

lecture 10 UI/UX and Programmatic Design cs : spring 2018 lecture 10 UI/UX and Programmatic Design cs198-001 : spring 2018 1 Announcements custom app progress form due before lab (~1 minute) will be released after lecture only 2 labs left (both very important)

More information

Apple Development Technology Workshops

Apple Development Technology Workshops Apple Development Technology Workshops Workshop 10 Table Views Building iphone Apps. Pt 2 Fall 2008 Hafez Rouzati Fall 2008 Zach Pousman Last Week UIViewControllers Organizing Content & Building iphone

More information

Stanford CS193p. Developing Applications for ios. Fall Stanford CS193p. Fall 2011

Stanford CS193p. Developing Applications for ios. Fall Stanford CS193p. Fall 2011 Developing Applications for ios Today UI Element of the Week UIToolbar ipad Split View Popover Universal (iphone + ipad) Application Demo Friday Section AVFoundation framework - Capturing and manipulating

More information

Your First iphone OS Application

Your First iphone OS Application Your First iphone OS Application General 2010-03-15 Apple Inc. 2010 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form

More information

Cocoa Programming A Quick-Start Guide for Developers

Cocoa Programming A Quick-Start Guide for Developers Extracted from: Cocoa Programming A Quick-Start Guide for Developers This PDF file contains pages extracted from Cocoa Programming, published by the Pragmatic Bookshelf. For more information or to purchase

More information

iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department

iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department iphone Programming Patrick H. Madden SUNY Binghamton Computer Science Department pmadden@acm.org http://optimal.cs.binghamton.edu General Outline Overview of the tools, and where to get more information

More information

Advanced ios. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 20 11/01/2012

Advanced ios. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 20 11/01/2012 Advanced ios CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 20 11/01/2012 1 Goals of the Lecture Present a few additional topics and concepts related to ios programming persistence serialization

More information

iphone Application Tutorial

iphone Application Tutorial iphone Application Tutorial 2008-06-09 Apple Inc. 2008 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any

More information

Announcements. Today s Topics

Announcements. Today s Topics Announcements Lab 2 is due tonight by 11:59 PM Late policy is 10% of lab total per day late So -7.5 points per day late for lab 2 Labs 3 and 4 are posted on the course website Extensible Networking Platform

More information

Why Model-View-Controller?

Why Model-View-Controller? View Controllers Why Model-View-Controller? Ever used the word spaghetti to describe code? Clear responsibilities make things easier to maintain Avoid having one monster class that does everything Why

More information

ITP 342 Mobile App Dev. Interface Builder in Xcode

ITP 342 Mobile App Dev. Interface Builder in Xcode ITP 342 Mobile App Dev Interface Builder in Xcode New Project From the Main Menu, select the File à New à Project option For the template, make sure Application is selected under ios on the left-hand side

More information

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney

1 Build Your First App. The way to get started is to quit talking and begin doing. Walt Disney 1 Build Your First App The way to get started is to quit talking and begin doing. Walt Disney Copyright 2015 AppCoda Limited All rights reserved. Please do not distribute or share without permission. No

More information

CS193E Lecture 7. Document-based Applications NSTableView Key-Value Coding

CS193E Lecture 7. Document-based Applications NSTableView Key-Value Coding CS193E Lecture 7 Document-based Applications NSTableView Key-Value Coding Agenda Questions? Review: delegates, MVC Document-based apps Table views Key Value Coding Model, View, Controller Controller Model

More information

Your First iphone Application

Your First iphone Application Your First iphone Application General 2009-01-06 Apple Inc. 2009 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form

More information

Navigation bar (Xcode version 4.5.2) 1. Create a new project. From the Xcode menu, select File > New > Project

Navigation bar (Xcode version 4.5.2) 1. Create a new project. From the Xcode menu, select File > New > Project Navigation bar (Xcode version 4.5.2) 1. Create a new project. From the Xcode menu, select File > New > Project Choose the Single View Application template Click Next. In the Choose options for your new

More information

IPHONE DEVELOPMENT. Getting Started with the iphone SDK

IPHONE DEVELOPMENT. Getting Started with the iphone SDK IPHONE DEVELOPMENT Getting Started with the iphone SDK OBJECTIVE-C The Big Picture STRICT SUPERSET OF C The Objective C Language Any C stuff applies Standard libs are here (time, sqrt etc) The C Language

More information

MVC and Interface Builder IAP 2010

MVC and Interface Builder IAP 2010 MVC and Interface Builder IAP 2010 iphonedev.csail.mit.edu edward benson / eob@csail.mit.edu Information-Driven Applications Application Flow UIApplication Main NIB Initialized UIAppDelegate - (void)applicationdidfinishlaunching:(uiapplication

More information

CS193p Spring 2010 Monday, April 12, 2010

CS193p Spring 2010 Monday, April 12, 2010 CS193p Spring 2010 Announcements Axess! Make sure your grading option matches what you were approved for Sonali s Office Hours Changed Friday 11am to 1pm Thursday 10am to noon Gates B26B Any questions

More information

ITP 342 Mobile App Dev. Connections

ITP 342 Mobile App Dev. Connections ITP 342 Mobile App Dev Connections User Interface Interactions First project displayed information to the user, but there was no interaction. We want the users of our app to touch UI components such as

More information

ios Mobile Development

ios Mobile Development ios Mobile Development Today UITableView! Data source-driven vertical list of views.! ipad! Device-specific UI idioms.! Demo! Shutterbug UITableView Very important class for displaying data in a table!

More information

iphone Application Programming Lecture 5: View Programming

iphone Application Programming Lecture 5: View Programming Lecture 5: View Programming Nur Al-huda Hamdan RWTH Aachen University Winter Semester 2015/2016 http://hci.rwth-aachen.de/iphone Name the UI Elements In the Screen 2 View Programming 3 View Programming

More information

CS193E: Temperature Converter Walkthrough

CS193E: Temperature Converter Walkthrough CS193E: Temperature Converter Walkthrough The goal of this walkthrough is to give you a fairly step by step path through building a simple Cocoa application. You are encouraged to follow the walkthrough,

More information

Event Delivery: The Responder Chain

Event Delivery: The Responder Chain When you design your app, it s likely that you want to respond to events dynamically. For example, a touch can occur in many different objects onscreen, and you have to decide which object you want to

More information

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode

Objectives. Submission. Register for an Apple account. Notes on Saving Projects. Xcode Shortcuts. CprE 388 Lab 1: Introduction to Xcode Objectives Register for an Apple account Create an application using Xcode Test your application with the iphone simulator Import certificates for development Build your application to the device Expand

More information

Mobile Application Programming. Messaging and Delegation

Mobile Application Programming. Messaging and Delegation Mobile Application Programming Messaging and Delegation Color Chooser Color Chooser MFColorChooserView UIControl or UIView MFColorChooserWheelView UIControl MFColorChooserValueSliderView UIControl MFColorChooserAlphaSliderView

More information

Developing Applications for ios

Developing Applications for ios Developing Applications for ios Lecture 7: View Controller Lifecycle and UIKit Radu Ionescu raducu.ionescu@gmail.com Faculty of Mathematics and Computer Science University of Bucharest Content View Controller

More information

Introductory ios Development

Introductory ios Development Introductory ios Development 152-164 Unit 5 - Multi-View Apps Quick Links & Text References What is a Delegate? What is a Protocol? Delegates, Protocols and TableViews Creating a Master-Detail App Modifying

More information

Building an Application

Building an Application Building an Application 7 Anatomy of an Application Compiled code Your code Frameworks Nib files UI elements and other objects Details about object relationships Resources (images, sounds, strings, etc)

More information

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall

Stanford CS193p. Developing Applications for ios. Fall CS193p. Fall Stanford Developing Applications for ios Today Drag and Drop Transferring information around within and between apps. EmojiArt Demo Drag and drop an image to get our EmojiArt masterpieces started. UITableView

More information

Object-Oriented Programming in Objective-C

Object-Oriented Programming in Objective-C In order to build the powerful, complex, and attractive apps that people want today, you need more complex tools than a keyboard and an empty file. In this section, you visit some of the concepts behind

More information

Intro to Development for ios. Dave Koziol Arbormoon Software, Inc.

Intro to Development for ios. Dave Koziol Arbormoon Software, Inc. Intro to Development for ios Dave Koziol Arbormoon Software, Inc. About Me Long time Apple Developer (21 WWDCs) Organizer Ann Arbor CocoaHeads President & ios Developer at Arbormoon Software Inc. Multiple

More information

CS193P - Lecture 8. iphone Application Development. Scroll Views & Table Views

CS193P - Lecture 8. iphone Application Development. Scroll Views & Table Views CS193P - Lecture 8 iphone Application Development Scroll Views & Table Views Announcements Presence 1 due tomorrow (4/28)! Questions? Presence 2 due next Tuesday (5/5) Announcements Enrolled students who

More information

A Better MVC. 300 line view controllers or bust. Dave A guy who thinks too deeply about stuff

A Better MVC. 300 line view controllers or bust. Dave A guy who thinks too deeply about stuff A Better MVC 300 line view controllers or bust Dave DeLong @davedelong A guy who thinks too deeply about stuff Heads Up This is all my opinion (! hi legal & pr teams!) Lots of similar terminology View

More information

NATIVE APP INTERCEPTS on ios & ANDROID

NATIVE APP INTERCEPTS on ios & ANDROID ethnio tm NATIVE APP INTERCEPTS on ios & ANDROID VERSION NO. 2 CREATED JAN 17, 2018 ETHNIO, INC. 6121 W SUNSET BLVD LOS ANGELES, CA 90028 TEL (888) 879-7439 OVERVIEW There are two basic methods for implementing

More information

AVAudioPlayer. avtouch Application

AVAudioPlayer. avtouch Application AVAudioPlayer avtouch Application iphone Application Index 1. iphone Application 1) iphone Application 2) iphone Application Main Method 3) iphone Application nib(.xib) 2. avtouch Application 1) avtouch

More information

Today s Topics. Scroll views Table views. UITableViewController Table view cells. Displaying data Controlling appearance & behavior

Today s Topics. Scroll views Table views. UITableViewController Table view cells. Displaying data Controlling appearance & behavior Today s Topics Scroll views Table views Displaying data Controlling appearance & behavior UITableViewController Table view cells Scroll Views UIScrollView For displaying more content than can fit on the

More information

Collection Views. Dr. Sarah Abraham

Collection Views. Dr. Sarah Abraham Collection Views Dr. Sarah Abraham University of Texas at Austin CS329e Fall 2016 What is a Collection View? Presents an ordered set of data items in a flexible layout Subclass of UIScrollView (like UITableView)

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p! Winter 2015

Stanford CS193p. Developing Applications for ios. Winter CS193p! Winter 2015 Stanford CS193p Developing Applications for ios Today UITextField Bonus Topic! Table View A UIView for displaying long lists or tables of data UITextField Like UILabel, but editable Typing things in on

More information

View Controller Lifecycle

View Controller Lifecycle View Controller Lifecycle View Controllers have a Lifecycle A sequence of messages is sent to them as they progress through it Why does this matter? You very commonly override these methods to do certain

More information

User Experience: Windows & Views

User Experience: Windows & Views View Programming Guide for ios User Experience: Windows & Views 2010-07-07 Apple Inc. 2010 Apple Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or

More information

Objective-C Primer. iphone Programmer s Association. Lorenzo Swank September 10, 2008

Objective-C Primer. iphone Programmer s Association. Lorenzo Swank September 10, 2008 Objective-C Primer iphone Programmer s Association Lorenzo Swank September 10, 2008 Disclaimer Content was blatantly and unapologetically stolen from the WWDC 2007 Fundamentals of Cocoa session, as well

More information

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016

Stanford CS193p. Developing Applications for ios. Spring CS193p. Spring 2016 Stanford Developing Applications for ios Today Views Custom Drawing Demo FaceView Views A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space For drawing And for handling

More information

ios Mobile Development

ios Mobile Development ios Mobile Development Today UITextView Scrollable, editable/selectable view of a mutable attributed string. View Controller Lifecycle Finding out what s happening as a VC is created, hooked up to the

More information

Topics in Mobile Computing

Topics in Mobile Computing Topics in Mobile Computing Workshop 1I - ios Fundamental Prepared by Y.H. KWOK What is ios? From Wikipedia (http://en.wikipedia.org/wiki/ios): ios is an operating system for iphone, ipad and Apple TV.

More information

Organization of User Interface Software

Organization of User Interface Software Organization of User Interface Software Administration Questions about assignments due and assignments assigned 2 What we will talk about Ways to organize UI code Different models of user interfaces as

More information

ios DeCal : Lecture 2 Structure of ios Applications: MVC and Auto Layout

ios DeCal : Lecture 2 Structure of ios Applications: MVC and Auto Layout ios DeCal : Lecture 2 Structure of ios Applications: MVC and Auto Layout Overview : Today s Lecture Model View Controller Design Pattern Creating Views in Storyboard Connecting your Views to Code Auto

More information

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017

Stanford CS193p. Developing Applications for ios. Winter CS193p. Winter 2017 Stanford Developing Applications for ios Today Views Custom Drawing Demo FaceView Views A view (i.e. UIView subclass) represents a rectangular area Defines a coordinate space For drawing And for handling

More information

Announcements. Today s Topics

Announcements. Today s Topics Announcements Lab 2 is due tonight Lab 3 is posted Due next Wednesday Sept 30 th 1 Extensible - CSE 436 Software Networking Engineering Platform Workshop 1 Today s Topics Designing iphone Applica;ons Model-

More information

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018

User Interfaces. Lecture 15. Application Programming on Mac OS. Hamza Bennani September 4, 2018 User Interfaces Lecture 15 Application Programming on Mac OS Hamza Bennani hamza@hamzabennani.com September 4, 2018 Logistics Office hours: Tue/Thu, 2pm to 3pm. Office: 250 Geoff Wyvill. Acknowledgment:

More information

Assignment III: Graphing Calculator

Assignment III: Graphing Calculator Assignment III: Graphing Calculator Objective You will enhance your Calculator to create a graph of the program the user has entered which can be zoomed in on and panned around. Your app will now work

More information

Navigation and Segues

Navigation and Segues Navigation and Segues Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Multiple views Segues Navigation

More information

Lesson 1: Hello ios! 1

Lesson 1: Hello ios! 1 Contents Introduction xxv Lesson 1: Hello ios! 1 ios Developer Essentials 1 A Suitable Mac 1 A Device for Testing 2 Device Differences 2 An ios Developer Account 4 The Official ios SDK 6 The Typical App

More information

Naviga&on and Tab Bar Controllers and Table View

Naviga&on and Tab Bar Controllers and Table View Naviga&on and Tab Bar Controllers and Table View UINaviga)onController Stack of view controllers Naviga)on bar How It Fits Together Top view controller s view Top view controller s )tle Previous view controller

More information

My First iphone App. 1. Tutorial Overview

My First iphone App. 1. Tutorial Overview My First iphone App 1. Tutorial Overview In this tutorial, you re going to create a very simple application on the iphone or ipod Touch. It has a text field, a label, and a button. You can type your name

More information

Building Mapping Apps for ios With Swift

Building Mapping Apps for ios With Swift Building Mapping Apps for ios With Swift Jeff Linwood This book is for sale at http://leanpub.com/buildingmappingappsforioswithswift This version was published on 2017-09-09 This is a Leanpub book. Leanpub

More information

Learn to make desktop LE

Learn to make desktop LE HACKING WITH SWIFT COMPLETE TUTORIAL COURSE Learn to make desktop LE P apps with real-worldam S Swift projects REEPaul Hudson F Project 1 Storm Viewer Get started coding in Swift by making an image viewer

More information

Lecture 8 Demo Code: Cassini Multithreading

Lecture 8 Demo Code: Cassini Multithreading Lecture 8 Demo Code: Cassini Multithreading Objective Included below is the source code for the demo in lecture. It is provided under the same Creative Commons licensing as the rest of CS193p s course

More information

My First Cocoa Program

My First Cocoa Program My First Cocoa Program 1. Tutorial Overview In this tutorial, you re going to create a very simple Cocoa application for the Mac. Unlike a line-command program, a Cocoa program uses a graphical window

More information

ITP 342 Mobile App Dev. Connections

ITP 342 Mobile App Dev. Connections ITP 342 Mobile App Dev Connections User Interface Interactions First project displayed information to the user, but there was no interaction. We want the users of our app to touch UI components such as

More information

ITP 342 Mobile App Dev. Interface Components

ITP 342 Mobile App Dev. Interface Components ITP 342 Mobile App Dev Interface Components Human Interface Guidelines ios Human Interface Guidelines (HIG) https://developer.apple.com/ library/ios/documentation/us erexperience/conceptual/m obilehig/index.html

More information

CSC 581: Mobile App Development Spring 2019

CSC 581: Mobile App Development Spring 2019 CSC 581: Mobile App Development Spring 2019 Unit 1: Getting Started with App Development Xcode installing XCode, creating a project, MVC pattern interface builder, storyboards, object library outlets vs.

More information

imate: ios Application

imate: ios Application imate: ios Application Document Version 1.0.1 Date: 27 th May, 2014 2 [IMATE: IOS APPLICATION] Contents AppDelegate Class Reference... 4 Tasks... 4 Properties... 4 Instance Methods... 4 ChatMenuViewController

More information

ITP 342 Mobile App Dev. Fundamentals

ITP 342 Mobile App Dev. Fundamentals ITP 342 Mobile App Dev Fundamentals Objective-C Classes Encapsulate data with the methods that operate on that data An object is a runtime instance of a class Contains its own in-memory copy of the instance

More information

Running Code on an ios Device. Appendix. The ios Developer Program

Running Code on an ios Device. Appendix. The ios Developer Program ------- Appendix A Running Code on an ios Device Developing for ios is many things: challenging, fun, rewarding, and exciting. One thing it is not is free. To begin, doing any legitimate ios development

More information

Learn to make ios apps

Learn to make ios apps HACKING WITH SWIFT PROJECTS 1-39 Learn to make ios apps E L P with real projects SAM E E FR Paul Hudson Project 1 Storm Viewer Get started coding in Swift by making an image viewer app and learning key

More information

Assignment III: Graphing Calculator

Assignment III: Graphing Calculator Assignment III: Graphing Calculator Objective You will enhance your Calculator to create a graph of the program the user has entered which can be zoomed in on and panned around. Your app will now work

More information

QUIZ. What is wrong with this code that uses default arguments?

QUIZ. What is wrong with this code that uses default arguments? QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code

More information

SAMPLE CHAPTER. Brendan G. Lim Martin Conte Mac Donell MANNING

SAMPLE CHAPTER. Brendan G. Lim Martin Conte Mac Donell MANNING SAMPLE CHAPTER Brendan G. Lim Martin Conte Mac Donell MANNING ios 7 in Action by Brendan G. Lim Martin Conte Mac Donell Chapter 2 Copyright 2014 Manning Publications brief contents PART 1 BASICS AND NECESSITIES...1

More information

CSE 438: Mobile Application Development Lab 2: Virtual Pet App

CSE 438: Mobile Application Development Lab 2: Virtual Pet App CSE 438: Mobile Application Development Lab 2: Virtual Pet App Overview In this lab, you will create an app to take care of your very own virtual pets! The app will only have one screen and simple logic,

More information

Stanford CS193p. Developing Applications for iphone 4, ipod Touch, & ipad Fall Stanford CS193p Fall 2010

Stanford CS193p. Developing Applications for iphone 4, ipod Touch, & ipad Fall Stanford CS193p Fall 2010 Developing Applications for iphone 4, ipod Touch, & ipad Today One last Objective-C topic: Protocols Using protocols to define/implement/use a data source and/or delegate Views UIView and UIWindow classes

More information

Tables. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder

Tables. Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Tables Mobile Application Development in ios School of EECS Washington State University Instructor: Larry Holder Mobile Application Development in ios 1 Outline Table View Controller Table View Table Cells

More information

Rules and syntax for inheritance. The boring stuff

Rules and syntax for inheritance. The boring stuff Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for

More information

Assignment IV: Smashtag Mentions

Assignment IV: Smashtag Mentions Assignment IV: Smashtag Mentions Objective In this assignment, you will enhance the Smashtag application that we built in class to give ready-access to hashtags, urls, images and users mentioned in a tweet.

More information

The MVC Design Pattern

The MVC Design Pattern The MVC Design Pattern The structure of iphone applications is based on the Model-View-Controller (MVC) design pattern because it benefits object-oriented programs in several ways. MVC based programs tend

More information

S A M P L E C H A P T E R

S A M P L E C H A P T E R SAMPLE CHAPTER Anyone Can Create an App by Wendy L. Wise Chapter 5 Copyright 2017 Manning Publications brief contents PART 1 YOUR VERY FIRST APP...1 1 Getting started 3 2 Building your first app 14 3 Your

More information

WINDOWS 8.X SIG SEPTEMBER 22, 2014

WINDOWS 8.X SIG SEPTEMBER 22, 2014 New Start Screen: Top RIGHT corner next to your Sign in Name is the OFF button. To the Right of Off button is a Search icon You can click on Search icon OR just start typing anywhere in open area of Start

More information

Xcode 4 Cookbook. Steven F. Daniel. Chapter No. 2 "User Interfaces Creating the UI"

Xcode 4 Cookbook. Steven F. Daniel. Chapter No. 2 User Interfaces Creating the UI Xcode 4 Cookbook Steven F. Daniel Chapter No. 2 "User Interfaces Creating the UI" In this package, you will find: A Biography of the author of the book A preview chapter from the book, Chapter NO.2 "User

More information

My First iphone App (for Xcode version 6.4)

My First iphone App (for Xcode version 6.4) My First iphone App (for Xcode version 6.4) 1. Tutorial Overview In this tutorial, you re going to create a very simple application on the iphone or ipod Touch. It has a text field, a label, and a button

More information

ITP 342 Mobile App Development. Model View Controller

ITP 342 Mobile App Development. Model View Controller ITP 342 Mobile App Development Model View Controller Model-View-Controller The Model-View-Controller (MVC) design pattern assigns objects in an application one of three roles: model, view, or controller.

More information