Topics Covered in This iOS Development Tutorial:
Creating a Single View Application, Adding Cells, Adding Images to an App, Retina Images
Exercise Preview

Jive Factory App Development Progress
Project Setup
Create single view application with proper configuration
Table View Implementation
Replace default controller with table view functionality
Static Cell Creation
Add and customize cells with titles and subtitles
Retina Image Integration
Implement multi-resolution image support
Exercise Overview
In this comprehensive exercise series, we'll build a professional-grade iOS app for the Jive Factory, a music venue showcasing upcoming performances. This hands-on project will teach you essential iOS development fundamentals while creating a real-world application that venue owners and music enthusiasts would actually use.
You'll master the critical skill of optimizing images for Apple's high-resolution Retina displays—a requirement for any app targeting today's iOS ecosystem. By the end of this tutorial, you'll have created a polished interface that demonstrates industry best practices for mobile app development.
Getting Started
We'll begin by setting up your development environment and creating the foundation for your music venue app. Follow these steps to establish your project structure:
Launch Xcode if it isn't already open.
Go to File > New > Project or use the shortcut Cmd–Shift–N.
Under Application, double–click App to choose this versatile starter template that provides the essential framework for iOS applications.
- Configure your project settings with the following specifications:
- Product Name: Jive Factory
- Team: None (maintain this setting for now)
- Organization Name: Your Name
- Organization Identifier: com. YourName
- Interface: Storyboard
- Language: Swift
- Ensure both options at the bottom (Use Core Data and Include Tests) remain unchecked. These advanced features aren't necessary for this foundational exercise.
Click Next to proceed to the save location dialog.
Navigate to your designated project folder: Desktop > Class Files > yourname-iOS App Dev 2 Class. Maintaining organized file structures is crucial for professional development workflows.
Verify that Create Git repository on My Mac is checked. Version control is an industry standard that will protect your work and enable collaboration.
Click Create to finalize your new Xcode project setup.
Since we're targeting iPhone users specifically, navigate to Deployment Info and set the Devices menu to iPhone. This optimization ensures your app performs optimally on its intended platform.
Xcode Project Configuration Checklist
Establishes proper app identification and branding
Ensures modern iOS development practices
Removes unnecessary complexity for basic app
Focuses development on single platform
Provides version control from project start
Creating a Single View App
Now we'll transform the basic template into a more sophisticated interface using Apple's powerful Table View Controller. This component is ideal for displaying lists of information—perfect for our venue's show listings:
- In the Project navigator, examine the Jive Factory folder. Notice that Xcode automatically generated several essential files, including a View Controller and AppDelegate.swift. While these provide a solid foundation, we'll implement a more specialized Table View Controller that better suits our app's requirements.
- Click on Main to open your storyboard—the visual interface design canvas.
- Ensure the Document Outline is visible for easier navigation. If it's hidden, click the Show Document Outline button
at the bottom left of the Editor area. In the Document Outline, expand View Controller Scene and select View Controller.
The default View Controller, while functional, lacks the specialized features we need for displaying lists of concerts. Let's replace it with a Table View Controller that's specifically designed for presenting structured data.
- With the View Controller selected, press Delete to remove it.
- In the Object library
(located at the top right above the Editor panel), locate the Table View Controller object. - Drag the Table View Controller onto the Editor canvas.
- In the Document Outline, select the newly added Table View Controller.
In the Attributes inspector
, locate the View Controller section and check Is Initial View Controller. This designates your Table View Controller as the app's entry point—the first screen users will see when launching the app.
Replacing Default View Controller
Open Main Storyboard
Navigate to Main.storyboard and ensure Document Outline is visible for easy component management
Delete Default Controller
Select and delete the automatically created View Controller to make room for table functionality
Add Table View Controller
Drag Table View Controller from Object library onto the Editor canvas
Set Initial View Controller
Check 'Is Initial View Controller' in Attributes inspector to restore Storyboard Entry Point
Adding Cells
With our Table View Controller in place, we'll configure the individual cells that will display each concert's information. This involves setting up the structure that will showcase band names, dates, and images:
- In the Document Outline, expand Table View Controller to reveal its components.
- Click on Table View to select the main container for your content.
- Navigate to the Attributes inspector tab
in the Utilities area. Under Table View, change the Content menu from "Dynamic Prototypes" to Static Cells.
Professional Note: Static cells are perfect for prototyping and apps with fixed content structures. In production applications with dynamic data (like real-time concert listings), you'd typically use Dynamic Prototype cells populated programmatically. We'll explore this advanced technique in subsequent exercises.
- In the Document Outline, expand both Table View and Table View Section to access the individual cells.
- You'll notice three Table View Cells are created by default. Since we're starting with a single prototype that we'll replicate later, let's remove the extras. Click on the second Table View Cell.
- Hold Shift and click the third Table View Cell to select both extra cells.
- Press Delete to remove them, leaving us with one clean starting point.
- Select the remaining Table View Cell.
- In the Attributes inspector
, change the Style menu to Subtitle. This built-in style provides the perfect layout for displaying band names with supporting information like dates. - In the Document Outline, expand Table View Cell and then Content View to access the individual text elements.
- Notice the two pre-configured labels: Title and Subtitle. Click on Title to begin customizing your first entry.
In the Attributes inspector
, locate the Text field containing "Title". Replace this placeholder text with: Nicole Atkins- Click on the Subtitle label.
Replace the "Subtitle" placeholder text with: Tue 5/1
Static vs Dynamic Cells
| Feature | Static Cells | Dynamic Cells |
|---|---|---|
| Use Case | Fixed mockup content | Code-driven data |
| Setup Complexity | Interface Builder only | Requires coding |
| Content Flexibility | Predetermined layout | Runtime customization |
| Best for Tutorial | Perfect for learning | Advanced technique |
The Subtitle style provides both Title and Subtitle labels automatically, perfect for displaying band names and show dates in a structured format.
Adding Images to an App
Visual elements significantly enhance user engagement in mobile apps. We'll add professional band thumbnails to each cell, while implementing Apple's sophisticated image management system that automatically optimizes display quality across different device types:
- In the Project navigator, click on Assets.xcassets—Apple's modern image management system that automatically handles multiple resolution variants.
Navigate to your image resources: Desktop > Class Files > yourname-iOS Dev Level 2 Class > Band Images > thumbnails
Understanding Retina Display Optimization: Notice each image exists in three versions with specific naming conventions. This isn't redundancy—it's professional optimization. Standard displays show images at their base resolution, while Retina displays (introduced in 2010 and now standard across Apple's lineup) require double or triple resolution images to maintain crisp, professional appearance. An image that appears as 30x30 points on screen actually displays as 60x60 pixels on Retina devices and 90x90 pixels on Retina HD displays.
Press Cmd–A to select all images in the thumbnails folder.
With Xcode visible, drag the entire selection into the Editor area of the Assets catalog.
Observe how Xcode intelligently recognizes the @1x, @2x, and @3x naming conventions and automatically organizes them into the appropriate resolution slots. This automation saves significant development time while ensuring professional image quality across all devices.
Current Best Practices (2026): With Apple's continued emphasis on high-quality displays and the proliferation of devices with varying pixel densities, providing @1x, @2x, and @3x versions remains essential. For example, a base image at 29x29 points requires @2x versions at 58x58 pixels and @3x versions at 87x87 pixels for optimal display across iPhone, iPad, and future device categories.
To verify the file management, CTRL–click (or Right–click) on Assets.xcassets in the Project navigator and select Show in Finder. This reveals how Xcode organizes your project resources.
Examine the Assets.xcassets folder structure. Notice how all thumbnail images are systematically organized and copied into your project. This centralized approach ensures efficient app bundling and runtime performance.
Return to Xcode and click on Main.storyboard to continue interface development.
In the Document Outline, select your Table View Cell.
In the Attributes inspector
, locate the Image dropdown menu and select thumb-nicole-atkins.Notice how the interface automatically allocates space for the thumbnail image alongside the text content. While Xcode's design canvas doesn't display images in storyboard view, we can preview the complete interface by running the app.
Configure the active scheme (top-left corner) to Jive Factory > iPhone 8 to preview your app on a representative device.
Technical Note: The iOS runtime automatically selects the appropriate image resolution based on the target device's display characteristics. This seamless optimization happens behind the scenes, ensuring your app always looks professional regardless of the user's hardware.
Click the Run button
to launch the iOS Simulator.Once the Simulator loads your app, evaluate the image presentation. You'll likely notice the thumbnail appears compressed because the default cell height is insufficient for optimal display.
Return to Xcode and ensure Table View Cell remains selected.
Switch to the Size inspector tab
in the Utilities panel.Modify the Row Height value to 88 and press Return. This height provides optimal balance between image clarity and efficient screen space utilization.
Click Run again to preview the improved cell layout. The increased height should now properly showcase the band thumbnail while maintaining clean, professional proportions.
iOS Display Resolution Requirements
iOS automatically detects higher-resolution images using the @2x and @3x naming suffixes, ensuring crisp display across all device types without additional code.
Adding More Cells
Now we'll expand our single prototype cell into a complete concert listing, demonstrating how to efficiently scale interface elements while maintaining consistency:
- Return to Xcode's interface builder.
- In the Document Outline, click on Table View Section to select the container for all cells.
- Navigate to the Attributes inspector tab
. - Change the Rows value from 1 to 4 and press Return. Xcode will automatically duplicate your configured cell, maintaining all formatting, dimensions, and styling. This efficient approach ensures interface consistency across all entries.
- Click on the second cell in the Editor to begin customizing it for a different band.
In the Attributes inspector
, change the Image selection to thumb-ambulance-ltd.Remember that image changes won't be visible in the storyboard editor—you'll need to run the app to see the complete visual result.
- Double–click the Nicole Atkins text in the second cell and replace it with: Ambulance LTD
- Double–click the date text and change it to: Fri 5/4
Complete the remaining cells using the information below, creating a diverse lineup that showcases different musical acts:
Band Date Image Filename Sleepies Sat 5/5 thumb-sleepies Black Angels Sun 5/6 thumb-black-angels - Test your completed interface by clicking the Run button. You should now see a professional-looking concert listing with four different bands, each displaying appropriate images and show dates.
- After reviewing your work in the Simulator, return to Xcode.
- Click the Stop button to halt the Simulator session.
- In the Project navigator, click on Main to return to your storyboard.
Keep your project open and properly saved. In the next exercise, we'll enhance this foundation by adding interactive functionality, navigation capabilities, and dynamic content management—transforming your static prototype into a fully functional iOS application.
Jive Factory Show Lineup
Nicole Atkins - Tue 5/1
Opening act featuring thumb-nicole-atkins image with customized cell height of 88 points for optimal display.
Ambulance LTD - Fri 5/4
Second show using thumb-ambulance-ltd image demonstrating cell duplication and content modification techniques.
Sleepies & Black Angels
Weekend shows on Sat 5/5 and Sun 5/6 completing the four-cell mockup with unique images and dates.
Setting row height to 88 points prevents image resizing issues and provides optimal visual balance for thumbnail images in table cells.