SlideShare a Scribd company logo
Building your first iOS app using Xamarin
Building your first iOS app
using Xamarin
Gill Cleeren - @gillcleeren
Hi, I’m Gill!
Gill Cleeren
MVP and Regional Director
.NET Practice Manager @ Ordina
Trainer & speaker
@gillcleeren
gill@snowball.be
I’m a Pluralsight author!
• Courses on Windows 8, social and HTML5
• http://gicl.me/mypscourses
Agenda
• Overview of Xamarin and Xamarin.iOS
• Preparing for iOS development
• Xamarin.iOS fundamentals
• TableViews in iOS
• Adding navigation
• Optimizing the application
• Preparing for store deployment
Targets of this talk
• Understanding the fundamentals of iOS app development with
Xamarin
• See how a fully working app can be built
The demo scenario
• iOS Coffee Store Manager
• List of coffee
• Navigation to details page
DEMO
Looking at the finished application
Overview of Xamarin
and Xamarin.iOS
Hello Xamarin
• Xamarin enables developers to reach all major mobile platforms!
• Native User Interface
• Native Performance
• Shared Code Across Platforms
• C# & .NET Framework
• Toolset on top of Visual Studio
• Enables VS to create native iOS and Android apps
• Commercial product
Write Everything in C#
iOS, Android, Windows, Windows Phone, Mac
Billions of Devices covered!
The Xamarin platform
Xamarin
Xamarin.Android Xamarin.iOS Xamarin Forms
Xamarin.iOS
Anything you can do in Objective-C/Swift/XCode can be done in
C# and Visual Studio (or Xamarin Studio) with Xamarin!
iOS Runtime model
• Native ARMx code – no JIT is being used here
• Mono runtime provides system services such as Garbage Collection
• Full access to iOS frameworks such as MapKit as well as .NET BCL
A word on code-sharing
• Xamarin brings development time through the use of code-sharing
• Possible (currently!) using
• Shared projects:
• allows organizing the shared code
• #if directives for platform specific code
• PCL
• “include” the platforms we want to support
• Abstract to interfaces where platforms have specific implementations
Target architecture for a Xamarin app
Preparing for iOS development
What you need for Xamarin.iOS development
• Xamarin license (Xamarin.iOS)
• PC or Mac or Mac only
• Visual Studio or Xamarin Studio (Mac)
• XCode SDK (free)
• Optionally, a VM (VMWare or Parallels) with Windows 7 or 8
• Optionally, a device
• Optionally, a developer account
Installing Xamarin.iOS
iOS development on Windows
• Required: a Mac with latest OSX!
• There are no iOS simulators on Windows!
Windows
Visual Studio
Xamarin iOS plugin in
Visual Studio
Mac with OSX
Xamarin Build
Host
iOS SDK
XCode
Interface Builder
Device
iOS
Simulator
Connecting Windows & Mac
Developing on the Mac? Xamarin Studio!
• Optimized for cross-platform
mobile development
• Explore native APIs with code
completion
• World class Android and iOS
designers
• Powerful debugging on
simulator or device
DEMO
A quick look at the development setup
for Xamarin.iOS
Xamarin.iOS
fundamentals
File  New Project
File  New Project
Fundamental #1: Application structure
• Main.cs
• Entry point of the application
• Main app class is passed: AppDelegate
• AppDelegate.cs
• Main application class
• Builds the window
• Listens for OS events
• MainStoryboard.storyboard
• Visual design of the app and the flow between the screens
Application structure
• ****ViewController.cs
• Powers the view of the app
• View controller handles the interactions between
the user and the view
• ****ViewController.designer.cs
• Auto-generated file
• Glue between controls in the View and
representations in View controller
• Don’t edit this file yourself!
Application structure
• Info.plist
• Property list file
• Contains app properties such as app name, icons,
splash screen images…
• Entitlements.plist
• Allows specifying with capabilities the app is
receiving
• PassKit, iCloud…
Main.cs
• Entry point for the application
• Contains static Main
• Creates the app
• Passes name of application delegate
Application delegate
Fundamental #2: Views & Storyboards
• Views are most commonly created using a Storyboard
• Alternatives: code or *.xib files (XCode)
• Designer can be used to edit the Storyboard
• A Storyboard is a file that contains the visual designs of our application’s
screens as well as the transitions and relationships between the screens
• A screen inside a Storyboard is a Scene
• Each Scene represents a controller and the views it manages (content view hierarchy)
• Most templates create a new storyboard automatically
• An app can have more than one storyboard
Storyboard designer
Auto-generation of the *.designer.cs file
• Controller.cs contains our code
• Handles all that happens in the View
• Controller.designer.cs maps Storyboard controls
to C# objects
• Glue to make controls available in code
• Never edit this file manually!
The *.designer.cs file
Fundamental #3: Controllers
• iOS apps follow MVC pattern
• Actual code lives in View Controller classes
• Each ViewController inherits from UIViewController
• Different “base” view controllers exist
• NavigationViewController
• TabViewController
• SplitViewController
• …
Linking the view and the view controller
• When selecting a screen, we can select the black bar at the bottom
• Points to the View Controller
• Is an instance of UIViewController
• “Code behind”
Types of view controllers
Handling events in the view controller
• Controller needs to respond to user interaction
• Button press, navigation…
• We need to wire up code in the controller to listen for interaction
with a control
• To write code against controls, they are wired up in the *.designer.cs
• From then, we can work with them in the controller classes
• Controls are available for wiring up in the ViewDidLoad()
Responding to user interaction
DEMO
Creating our first iOS application together!
Adding a list
using
UITableView
I’d like an app for this
please.
The UITableView
• Lists of data can be visualized using the UITableView
• Can also be used for detail screens
• Contains cells (individual rows)
• Can have index and grouping (headers and footers)
• Can be placed in editing mode to allow data management
• Similar to Android: works with intermediate: UITableViewSource
Typical visualizations of the UITableView
Plain Index Grouped Edit
Participating classes
• UITableView
• UITableViewCell
• UITableViewSource
• UITableViewController
Loading data in the UITableView
• Each UITableView is assigned a UITableViewSource
• Table queries the source to learn how it should be rendered
• How many rows
• How high are the rows (if not default)
• Source supplies each cell view, populated with data
• 2 methods are required to show data
• RowsInSection
• returns an int count of the total number of rows of data the table should display
• GetCell
• return a UITableCellView populated with data for the corresponding row index passed to
the method
DEMO
Loading a list of data
I’d like an app for this
please.
Changing the appearance of the cells
• iOS comes with 4 built-in styles
• We can create our own styles as well
Built-in styles
Default Subtitle Value1 Value2
Using a built-in styles
cell = new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier);
cell = new UITableViewCell (UITableViewCellStyle.Subtitle, cellIdentifier);
cell = new UITableViewCell (UITableViewCellStyle.Value1, cellIdentifier);
cell = new UITableViewCell (UITableViewCellStyle.Value2, cellIdentifier);
Creating your own cell layout
• It’s possible to provide an entirely different cell
• Different color
• Different control layout
• We need to create a new UITableViewCell
• Implements
• Constructor
• Creates the UI controls and sets the custom style properties
• UpdateCell
• Method for UITableView.GetCell to use to set the cell’s properties
• LayoutSubviews
• Set the location of the UI controls
• Possible to have more than one layout and create them based on content being displayed
DEMO
Changing our table view
Navigation
Navigation with the UINavigationController
• NavigationController is a lookless controller (UINavigationController)
• Is special type of UIViewController
• Allows navigating from one screen to another
• Doesn’t really manage a Content View Hierarchy
• Instead manages other View controllers
• + A specific, own view hierarchy including a navigation bar, title, back button…
• VERY common pattern in iOS
Navigation with the UINavigationController
• Allows us to navigate to second screen
• New views are pushed on the stack
Add to
stack
Navigation with the UINavigationController
• Can provide a back button on the title bar
• Pops the current controller off the back stack
• Loads previous one again
Remove from
stack
The NavigationController
• Automatically provides a title bar
• Can be used to display controller title
Concept of the root view controller
• Navigation controller is lookless
• Needs to be paired with a Root View Controller
• Root view controller is first controller in the stack
• Loads the first content view hierarchy into the window
Actual navigation: Segues
• Navigation/transition to another view is done (mostly) through
the use of Segues (pronounced Segways)
• Shown using arrow between views
• A storyboard can contain a segue with no source:
Sourceless segue
• This view will get loaded when the application starts
Actual navigation: Segues
• Adding segues can be done in the storyboard designer
• Gives choice of desired action
Passing data with segues
• PrepareForSegue is called before transition is executed
• We can access the next view controller using the DestinationViewController
property on the Segue
DEMO
Adding a second screen
and navigation
Optimizing the application
Application properties: info.plist
Application
image resources
Icon sizes
• Icons (and other images) are required to be added in different
resolutions
iOS 5/6 iOS 7/8 iOS 8 (6plus)
1x 2x 1x 2x 3x
App icon 57x57 114x114 Not supported 120x120 180x180
Spotlight 29x29 58x58 80x80 120x120
Settings 29x29 58x58 - - 87x87
entitlements.plist
DEMO
Adding application icons
Store
deployment
Deploying your apps to the store
• Store deployment involves 3 major parts
• Provisioning
• Creating a profile that includes code-signing information used to publish the app
• iTunes Connect information settings
• Online tool to add information that will be used for the application’s page in the App
Store
• Application Submission
• Signed binary can be uploaded to Apple for review
• Will be published in the store soon after that
Things to do before submitting
• App needs to meet Apple’s guidelines for quality and content
• Can be rejected
• Must be fixed and resubmitted
• Guidelines can be found at https://developer.apple.com/app-
store/review/guidelines/
• Test the app for crashes under normal circumstances
• Make sure the description matches what the app does!
Summary
• Xamarin.iOS leverages your C# knowledge to build apps for Android
• iOS is further from regular .NET development
• Getting your head around UI paradigms will take time!
Thanks!
Q&A
Building your first iOS app
using Xamarin
Gill Cleeren - @gillcleeren
Your feedback is important!
Scan the QR Code and let us know via the TechDays App.
Laat ons weten wat u van de sessie vindt via de TechDays App!
Scan de QR Code.
Bent u al lid van de Microsoft Virtual Academy?! Op MVA kunt u altijd iets
nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan
op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT-
Professionals en Ontwikkelaars.

More Related Content

PPTX
Building your first android app using Xamarin
PPTX
Introduction to Xamarin - Confoo 2015
PPTX
Introduction to xamarin
PPTX
Hybrid Mobile App Development - Xamarin
PDF
Cross platform Xamarin Apps With MVVM
PDF
Native i os, android, and windows development in c# with xamarin 4
PPTX
Introduction to xamarin
PPT
Best Practices Configuring And Developing Share Point Solutions
Building your first android app using Xamarin
Introduction to Xamarin - Confoo 2015
Introduction to xamarin
Hybrid Mobile App Development - Xamarin
Cross platform Xamarin Apps With MVVM
Native i os, android, and windows development in c# with xamarin 4
Introduction to xamarin
Best Practices Configuring And Developing Share Point Solutions

What's hot (20)

PPTX
Introduction to Xamarin
PDF
Xamarin Platform
PDF
Xamarin microsoft graph
PPTX
Introduction to Xamarin
PDF
Intro to Xamarin
PPTX
Highlights from the Xamarin Evolve 2016 conference
PPTX
Hybrid Mobile Development
PDF
Azure mobile services
PPTX
Xamarin.Forms Bootcamp
PDF
MOPCON 2014 - Best software architecture in app development
PDF
Introduction to xamarin
PDF
Xamarin DevOps
PPTX
Building Mobile Apps With Xamarin and Visual Studio App Center
PPTX
Prism Forms App
PPTX
Xamarin tools
PPT
Native App Development for iOS, Android, and Windows with Visual Studio
PPTX
Building iOS applications with Xamarin and C#
PDF
.NET North UG - What’s new & next for Xamarin developers
PPTX
Cape Town MS Developer User Group: Xamarin Community Toolkit
PDF
Xamarin.Forms
Introduction to Xamarin
Xamarin Platform
Xamarin microsoft graph
Introduction to Xamarin
Intro to Xamarin
Highlights from the Xamarin Evolve 2016 conference
Hybrid Mobile Development
Azure mobile services
Xamarin.Forms Bootcamp
MOPCON 2014 - Best software architecture in app development
Introduction to xamarin
Xamarin DevOps
Building Mobile Apps With Xamarin and Visual Studio App Center
Prism Forms App
Xamarin tools
Native App Development for iOS, Android, and Windows with Visual Studio
Building iOS applications with Xamarin and C#
.NET North UG - What’s new & next for Xamarin developers
Cape Town MS Developer User Group: Xamarin Community Toolkit
Xamarin.Forms
Ad

Similar to Building your first iOS app using Xamarin (20)

PPTX
Xamarin.iOS introduction
PPTX
iOS for C# Developers - DevConnections Talk
PDF
Building Your First iOS App with Xamarin for Visual Studio
PPT
Ios training-cum-course-in-mumbai-
PPTX
Xamarin.Mac Introduction
PDF
Session 8 - Xcode 5 and interface builder for iOS 7 application
PPTX
Basic iOS Training with SWIFT - Part 1
PPTX
Code camp 2011 Getting Started with IOS, Una Daly
PPTX
PPT
iPhone application development training day 1
PDF
Ios 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
PDF
iOS 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
PDF
iOS 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
PPT
Ios-training-institute-in-mumbai
PDF
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
PDF
Building a Completed iPhone App
PDF
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
PDF
Ios-training-institute-in-mumbai
PDF
Ios 5 Programming Cookbook Solutions Examples For Iphone Ipad And Ipod Touch ...
PDF
iOS Development Survival Guide for the .NET Guy
Xamarin.iOS introduction
iOS for C# Developers - DevConnections Talk
Building Your First iOS App with Xamarin for Visual Studio
Ios training-cum-course-in-mumbai-
Xamarin.Mac Introduction
Session 8 - Xcode 5 and interface builder for iOS 7 application
Basic iOS Training with SWIFT - Part 1
Code camp 2011 Getting Started with IOS, Una Daly
iPhone application development training day 1
Ios 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
iOS 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
iOS 7 Programming Cookbook 2nd Edition Vandad Nahavandipoor
Ios-training-institute-in-mumbai
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
Building a Completed iPhone App
iOS 5 Programming Cookbook Solutions Examples for iPhone iPad and iPod touch ...
Ios-training-institute-in-mumbai
Ios 5 Programming Cookbook Solutions Examples For Iphone Ipad And Ipod Touch ...
iOS Development Survival Guide for the .NET Guy
Ad

More from Gill Cleeren (12)

PPTX
Continuous integration and delivery with Xamarin and VSTS
PPTX
Real world apps with Xamarin and MVVM
PPTX
Hello windows 10
PPTX
Bootstrap: the full overview
PPTX
Top 10 HTML5 features every developer should know!
PPTX
Building a community - BuildStuff Lithuania 2014
PPTX
C# everywhere: Xamarin and cross platform development
PPTX
Getting started with jQuery
PPTX
Top 10 HTML5 features
PPTX
Comparing XAML and HTML: FIGHT!
PPTX
Why you shouldn't dismiss windows 8 for your lob apps
PPTX
Advanced MVVM in Windows 8
Continuous integration and delivery with Xamarin and VSTS
Real world apps with Xamarin and MVVM
Hello windows 10
Bootstrap: the full overview
Top 10 HTML5 features every developer should know!
Building a community - BuildStuff Lithuania 2014
C# everywhere: Xamarin and cross platform development
Getting started with jQuery
Top 10 HTML5 features
Comparing XAML and HTML: FIGHT!
Why you shouldn't dismiss windows 8 for your lob apps
Advanced MVVM in Windows 8

Recently uploaded (20)

PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Nekopoi APK 2025 free lastest update
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
System and Network Administraation Chapter 3
PDF
Digital Strategies for Manufacturing Companies
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Introduction to Artificial Intelligence
PPTX
ai tools demonstartion for schools and inter college
PPT
Introduction Database Management System for Course Database
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Nekopoi APK 2025 free lastest update
Navsoft: AI-Powered Business Solutions & Custom Software Development
How to Migrate SBCGlobal Email to Yahoo Easily
System and Network Administraation Chapter 3
Digital Strategies for Manufacturing Companies
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Understanding Forklifts - TECH EHS Solution
Wondershare Filmora 15 Crack With Activation Key [2025
2025 Textile ERP Trends: SAP, Odoo & Oracle
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction to Artificial Intelligence
ai tools demonstartion for schools and inter college
Introduction Database Management System for Course Database
CHAPTER 2 - PM Management and IT Context
VVF-Customer-Presentation2025-Ver1.9.pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf

Building your first iOS app using Xamarin

  • 2. Building your first iOS app using Xamarin Gill Cleeren - @gillcleeren
  • 3. Hi, I’m Gill! Gill Cleeren MVP and Regional Director .NET Practice Manager @ Ordina Trainer & speaker @gillcleeren gill@snowball.be
  • 4. I’m a Pluralsight author! • Courses on Windows 8, social and HTML5 • http://gicl.me/mypscourses
  • 5. Agenda • Overview of Xamarin and Xamarin.iOS • Preparing for iOS development • Xamarin.iOS fundamentals • TableViews in iOS • Adding navigation • Optimizing the application • Preparing for store deployment
  • 6. Targets of this talk • Understanding the fundamentals of iOS app development with Xamarin • See how a fully working app can be built
  • 7. The demo scenario • iOS Coffee Store Manager • List of coffee • Navigation to details page
  • 8. DEMO Looking at the finished application
  • 10. Hello Xamarin • Xamarin enables developers to reach all major mobile platforms! • Native User Interface • Native Performance • Shared Code Across Platforms • C# & .NET Framework • Toolset on top of Visual Studio • Enables VS to create native iOS and Android apps • Commercial product
  • 11. Write Everything in C# iOS, Android, Windows, Windows Phone, Mac Billions of Devices covered!
  • 12. The Xamarin platform Xamarin Xamarin.Android Xamarin.iOS Xamarin Forms
  • 13. Xamarin.iOS Anything you can do in Objective-C/Swift/XCode can be done in C# and Visual Studio (or Xamarin Studio) with Xamarin!
  • 14. iOS Runtime model • Native ARMx code – no JIT is being used here • Mono runtime provides system services such as Garbage Collection • Full access to iOS frameworks such as MapKit as well as .NET BCL
  • 15. A word on code-sharing • Xamarin brings development time through the use of code-sharing • Possible (currently!) using • Shared projects: • allows organizing the shared code • #if directives for platform specific code • PCL • “include” the platforms we want to support • Abstract to interfaces where platforms have specific implementations
  • 16. Target architecture for a Xamarin app
  • 17. Preparing for iOS development
  • 18. What you need for Xamarin.iOS development • Xamarin license (Xamarin.iOS) • PC or Mac or Mac only • Visual Studio or Xamarin Studio (Mac) • XCode SDK (free) • Optionally, a VM (VMWare or Parallels) with Windows 7 or 8 • Optionally, a device • Optionally, a developer account
  • 20. iOS development on Windows • Required: a Mac with latest OSX! • There are no iOS simulators on Windows! Windows Visual Studio Xamarin iOS plugin in Visual Studio Mac with OSX Xamarin Build Host iOS SDK XCode Interface Builder Device iOS Simulator
  • 22. Developing on the Mac? Xamarin Studio! • Optimized for cross-platform mobile development • Explore native APIs with code completion • World class Android and iOS designers • Powerful debugging on simulator or device
  • 23. DEMO A quick look at the development setup for Xamarin.iOS
  • 25. File  New Project
  • 26. File  New Project
  • 27. Fundamental #1: Application structure • Main.cs • Entry point of the application • Main app class is passed: AppDelegate • AppDelegate.cs • Main application class • Builds the window • Listens for OS events • MainStoryboard.storyboard • Visual design of the app and the flow between the screens
  • 28. Application structure • ****ViewController.cs • Powers the view of the app • View controller handles the interactions between the user and the view • ****ViewController.designer.cs • Auto-generated file • Glue between controls in the View and representations in View controller • Don’t edit this file yourself!
  • 29. Application structure • Info.plist • Property list file • Contains app properties such as app name, icons, splash screen images… • Entitlements.plist • Allows specifying with capabilities the app is receiving • PassKit, iCloud…
  • 30. Main.cs • Entry point for the application • Contains static Main • Creates the app • Passes name of application delegate
  • 32. Fundamental #2: Views & Storyboards • Views are most commonly created using a Storyboard • Alternatives: code or *.xib files (XCode) • Designer can be used to edit the Storyboard • A Storyboard is a file that contains the visual designs of our application’s screens as well as the transitions and relationships between the screens • A screen inside a Storyboard is a Scene • Each Scene represents a controller and the views it manages (content view hierarchy) • Most templates create a new storyboard automatically • An app can have more than one storyboard
  • 34. Auto-generation of the *.designer.cs file • Controller.cs contains our code • Handles all that happens in the View • Controller.designer.cs maps Storyboard controls to C# objects • Glue to make controls available in code • Never edit this file manually!
  • 36. Fundamental #3: Controllers • iOS apps follow MVC pattern • Actual code lives in View Controller classes • Each ViewController inherits from UIViewController • Different “base” view controllers exist • NavigationViewController • TabViewController • SplitViewController • …
  • 37. Linking the view and the view controller • When selecting a screen, we can select the black bar at the bottom • Points to the View Controller • Is an instance of UIViewController • “Code behind”
  • 38. Types of view controllers
  • 39. Handling events in the view controller • Controller needs to respond to user interaction • Button press, navigation… • We need to wire up code in the controller to listen for interaction with a control • To write code against controls, they are wired up in the *.designer.cs • From then, we can work with them in the controller classes • Controls are available for wiring up in the ViewDidLoad()
  • 40. Responding to user interaction
  • 41. DEMO Creating our first iOS application together!
  • 42. Adding a list using UITableView I’d like an app for this please.
  • 43. The UITableView • Lists of data can be visualized using the UITableView • Can also be used for detail screens • Contains cells (individual rows) • Can have index and grouping (headers and footers) • Can be placed in editing mode to allow data management • Similar to Android: works with intermediate: UITableViewSource
  • 44. Typical visualizations of the UITableView Plain Index Grouped Edit
  • 45. Participating classes • UITableView • UITableViewCell • UITableViewSource • UITableViewController
  • 46. Loading data in the UITableView • Each UITableView is assigned a UITableViewSource • Table queries the source to learn how it should be rendered • How many rows • How high are the rows (if not default) • Source supplies each cell view, populated with data • 2 methods are required to show data • RowsInSection • returns an int count of the total number of rows of data the table should display • GetCell • return a UITableCellView populated with data for the corresponding row index passed to the method
  • 47. DEMO Loading a list of data I’d like an app for this please.
  • 48. Changing the appearance of the cells • iOS comes with 4 built-in styles • We can create our own styles as well
  • 50. Using a built-in styles cell = new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier); cell = new UITableViewCell (UITableViewCellStyle.Subtitle, cellIdentifier); cell = new UITableViewCell (UITableViewCellStyle.Value1, cellIdentifier); cell = new UITableViewCell (UITableViewCellStyle.Value2, cellIdentifier);
  • 51. Creating your own cell layout • It’s possible to provide an entirely different cell • Different color • Different control layout • We need to create a new UITableViewCell • Implements • Constructor • Creates the UI controls and sets the custom style properties • UpdateCell • Method for UITableView.GetCell to use to set the cell’s properties • LayoutSubviews • Set the location of the UI controls • Possible to have more than one layout and create them based on content being displayed
  • 54. Navigation with the UINavigationController • NavigationController is a lookless controller (UINavigationController) • Is special type of UIViewController • Allows navigating from one screen to another • Doesn’t really manage a Content View Hierarchy • Instead manages other View controllers • + A specific, own view hierarchy including a navigation bar, title, back button… • VERY common pattern in iOS
  • 55. Navigation with the UINavigationController • Allows us to navigate to second screen • New views are pushed on the stack Add to stack
  • 56. Navigation with the UINavigationController • Can provide a back button on the title bar • Pops the current controller off the back stack • Loads previous one again Remove from stack
  • 57. The NavigationController • Automatically provides a title bar • Can be used to display controller title
  • 58. Concept of the root view controller • Navigation controller is lookless • Needs to be paired with a Root View Controller • Root view controller is first controller in the stack • Loads the first content view hierarchy into the window
  • 59. Actual navigation: Segues • Navigation/transition to another view is done (mostly) through the use of Segues (pronounced Segways) • Shown using arrow between views • A storyboard can contain a segue with no source: Sourceless segue • This view will get loaded when the application starts
  • 60. Actual navigation: Segues • Adding segues can be done in the storyboard designer • Gives choice of desired action
  • 61. Passing data with segues • PrepareForSegue is called before transition is executed • We can access the next view controller using the DestinationViewController property on the Segue
  • 62. DEMO Adding a second screen and navigation
  • 66. Icon sizes • Icons (and other images) are required to be added in different resolutions iOS 5/6 iOS 7/8 iOS 8 (6plus) 1x 2x 1x 2x 3x App icon 57x57 114x114 Not supported 120x120 180x180 Spotlight 29x29 58x58 80x80 120x120 Settings 29x29 58x58 - - 87x87
  • 70. Deploying your apps to the store • Store deployment involves 3 major parts • Provisioning • Creating a profile that includes code-signing information used to publish the app • iTunes Connect information settings • Online tool to add information that will be used for the application’s page in the App Store • Application Submission • Signed binary can be uploaded to Apple for review • Will be published in the store soon after that
  • 71. Things to do before submitting • App needs to meet Apple’s guidelines for quality and content • Can be rejected • Must be fixed and resubmitted • Guidelines can be found at https://developer.apple.com/app- store/review/guidelines/ • Test the app for crashes under normal circumstances • Make sure the description matches what the app does!
  • 72. Summary • Xamarin.iOS leverages your C# knowledge to build apps for Android • iOS is further from regular .NET development • Getting your head around UI paradigms will take time!
  • 74. Q&A
  • 75. Building your first iOS app using Xamarin Gill Cleeren - @gillcleeren
  • 76. Your feedback is important! Scan the QR Code and let us know via the TechDays App. Laat ons weten wat u van de sessie vindt via de TechDays App! Scan de QR Code. Bent u al lid van de Microsoft Virtual Academy?! Op MVA kunt u altijd iets nieuws leren over de laatste technologie van Microsoft. Meld u vandaag aan op de MVA Stand. MVA biedt 7/24 gratis online training on-demand voor IT- Professionals en Ontwikkelaars.