Saturday, December 29, 2018

Onboarding


As a mobile iOS developer, putting together an onboarding experience looks easy enough but there are some tricky hurdles to get over. Especially those "paging dots". By default, iOS wants to use white dots on a black bar. And no one wants that. So you have to implement a custom solution to show it in a way that actually looks decent.
My patrons have access to the full Xcode project source files as well as over 50 other projects: https://www.patreon.com/posts/23612011

Monday, December 24, 2018

Add Custom Font and Alternate Characters (iOS, Xcode 10, Swift 4)

Have you ever wanted to find more ways to make your app look nicer? If so, then this video is perfect for you because you will learn how to add custom fonts to your project in Xcode. First, you will learn how to add the custom font to your project and use it. Next, you will learn how to switch out some of the letters for alternate characters if your font has them.

When you’re finished with this tutorial you will have more ways to better customize your app and set it apart from the rest of the apps in the App Store.




Wednesday, December 12, 2018

Customizing the Nav Bar - Part 28 - Itinerary App (iOS, Xcode 10, Swift 4)

By the time you are done watching you will learn how to customize the nav bar's background color, font and font color. You will learn how to do this in interface builder AND in code using UIAppearance.



Tuesday, December 11, 2018

Swift Tip: Reduce Hard-Coded Strings - Part 27 - Itinerary App (iOS, Xcode, Swift)

In this video I give some tips on reducing hard-coded strings in your code. Hard-coded strings are a liability to your app as the compiler will not catch your mistakes. We use hard-codes strings to refer to the UITableViewCell identifiers. So let's see if there's a better way!



Monday, December 10, 2018

Custom TableView Cell - Part 26 - Itinerary App (iOS, Xcode 10, Swift 4)

If you don't want to use the default tableview cells then you can create your own. In this video you learn how to create your own custom tableview cell.



Monday, November 26, 2018

Populating Tableview Sections - Part 24 - Itinerary App (iOS, Xcode 10, Swift 4)

You're obviously going to learn how to populate our next screen for the activities which will have sections or section headers. And you're also going to learn a lot of good things along the way including a new Swift 4.2 change (16:47) that was made.

Some other things this video teaches:
* Passing data from one view controller to the next
6:09
* Threading (background and main)
10:26
* How to select a specific item in an array
11:57
* How to solve a funny "bug" with UIImageViews
23:55
* Setting up TableView section functions
27:25
* How to create fallback values for variables that could be nil
31:42
* How to add variables to strings
33:57
* What default UI controls already exist in a UITableViewCell
38:22
* How to add and delete code snippets and had placeholder text
40:17



Wednesday, November 21, 2018

Mobile UI Prototyping in Keynote - Part 23 - Itinerary App (iOS, Xcode 10, Swift 4)

We need to design the next screen for our app so we can present it to our group and they can give feedback.

In this video I create 3 prototypes in Apple's Keynote app. It's not just for presentations. It makes for quick and easy prototyping! And it's free.



 If you'd like a more in-depth tutorial about prototyping in Keynote, then check out my previous video on it: https://youtu.be/jyxWBzDhcMI



Thursday, November 15, 2018

3 Ways to Navigate from a Table View Cell - Part 22 - Itinerary App (iOS...

Navigate to another view controller after tapping a UITableViewCell. You will learn 3 different ways in which to navigate forwards and backwards using both storyboards or in code.

You will learn about segues, view controller functions to present and dismiss view controllers and navigation controller functions to push and pop view controllers.

Friday, October 26, 2018

Thursday, October 18, 2018

3 Steps to App Icons with FREE Tools! - Part 20 - Itinerary App (iOS, Xc...

Having trouble generating an icon for your app? Watch this video and learn my three simple steps to creating an icon. And the best part is I show you how to do all this with FREE tools! Get started today and you will generating app icons in no time.



Wednesday, October 3, 2018

Help Screens in iOS Apps - Part 19 - Itinerary App (iOS, Xcode 10, Swift 4)

Sometimes you want to help users with some tips about how to use your app. Learn one way you can do this by using the view controller's scene dock. We create a help screen and we keep track if the user has seen it or not. If the user has seen it, then we do not show it again.



Friday, September 21, 2018

Itinerary App - Part 18 - Swipe to Edit Table View Row (iOS, Xcode 10, S...

In the last video you learned how to swipe to delete a table view row and present the user with an alert. In this video you will learn about swiping right and showing and edit action. When tapped we will present the user with our popup with the trip title and image loaded.



You're also going to learn some other things such as new Xcode 10 and Swift 4.2 features, calling a segue in code, problems with named colors and image assets, a tool to find matching colors to expand your color theme and much more!







-- CODE UPDATES --

There are some things I forgot to cover while teaching that are important.



1. We want to reset the tripIndexToEdit in our TripsViewController after the popup closes. If we don't set that variable back to nil then the popup will always thing you want to edit. We want to do this in the prepareForSegue, in the popup's doneSaving action:



override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "toAddTripSegue" {

        let popup = segue.destination as! AddTripViewController

        popup.tripIndexToEdit = self.tripIndexToEdit

        popup.doneSaving = { [weak self] in

            self?.tableView.reloadData()

            self?.tripIndexToEdit = nil

        }

    }

}



2. I forgot to change the popup's title (titleLabel) when we are editing a trip! Here is the code we want in the popup's viewDidLoad:



if let index = tripIndexToEdit {

    let trip = Data.tripModels[index]

    tripTextField.text = trip.title

    imageView.image = trip.image

    titleLabel.text = "Edit Trip"

}

Wednesday, September 12, 2018

Itinerary App - Part 17 - Swipe To Delete Table View Row (iOS, Xcode 9, ...

In this video you will learn the new way to swipe to delete (since iOS 11). When swiping to delete a table view row we will be presenting the user with an alert confirmation too. You will learn how to configure the button that is exposed by swiping, such as setting the text, icon and background color and the action to perform after tapping the button exposed by swiping.

In-Depth Info on configuring swipe actions:
https://youtu.be/RSxfGGdA8QE



Monday, August 27, 2018

Itinerary App - Part 16 - Access The Photo Library (iOS, Xcode 9, Swift 4)

Learn how to access the user's photo library in iOS so they can pick a photo. And if the user denies access, how do you handle that if later they change their mind? Learn how! You're going to learn a lot of other little things in this video too.

Wednesday, August 1, 2018

Itinerary App - Part 15 - Images in Text Fields for Validation (iOS, Xco...

In this video you will learn different options for customizing the UITextField to show validation failed. Including how to add an image to the actual textfield, change it's color, border or placeholder text (hint text) if validation fails. These are just some of the options to indicate if text field validation fails. Combine, choose or invent ways to validate text fields in your app!



Tuesday, July 31, 2018

Itinerary App - Part 15 - Images in Text Fields for Validation (iOS, Xco...

In this video you will learn different options for customizing the UITextField to show validation failed. Including how to add an image to the actual textfield, change it's color, border or placeholder text (hint text) if validation fails. These are just some of the options to indicate if text field validation fails. Combine, choose or invent ways to validate text fields in your app!



Friday, July 27, 2018

Itinerary App - Part 14 - Callbacks with Popups (iOS, Xcode 9, Swift 4)

We have a popup but how do we save the data entered into the modal popup? And when the popup closes, how do we know to reload the data in the table view to show the new data?

In this video you will learn how to do each of these things. You will learn what a callback is in iOS and the 2 steps to implement them. You will also learn how to define a function type in Swift and assign a value (or a function) to it.




Sunday, July 22, 2018

Itinerary App - Part 13 - Popup To Add Data (iOS, Xcode 9, Swift 4)

In this video we will create a popup in a separate view controller so users can add data. We will refactor the storyboard to move the view controller into its own storyboard file. Then you will learn how to style controls by using subclassing. And when subclassing, you will learn about a few different options of where to put the styling code.



Monday, June 18, 2018

Itinerary App - Part 12 - Custom UIButton: Floating Action Button (iOS, ...

In this tutorial, you will learn how to create a custom button. You will see a few different ways in which we can customize a UIButton through code, an extension and by subclassing the UIButton class. The choice is yours!




Monday, June 11, 2018

Itinerary App - Part 11 - App Theme (iOS, Xcode 9, Swift 4)

In this video you will learn how to create and use and app theme class to hold your app's theme. You will also learn how to add a custom font file to your project and how to assign a custom font to your labels through the theme class that you create.



Sunday, June 3, 2018

Itinerary App - Part 10 - Swift Language Extensions (iOS, Xcode 9, Swift 4)

Want to learn a super easy way to add new code to existing classes without having to sub-class them? Keep watching to learn how to use extensions to add functionality to existing classes and to help organize your code.



Friday, May 25, 2018

Itinerary App - Part 9 - Table Views | Custom Cells (iOS, Xcode 9, Swift 4)

What are the basics of the UITableView and how do you create a custom table view cell? In this video we explore these topics. You will learn how to retrieve data and populate table view rows. Then you will learn how to create your own custom cell if you don't like any of the table view cell styles that Apple gives you.



Saturday, May 12, 2018

Itinerary App - Part 2.3 - Bitbucket Cloning (iOS, Xcode 9)

Want to work on a Bitbucket project? Here is how you can copy or clone the project to your local computer and begin working on it in Xcode.



Friday, May 11, 2018

Itinerary App - Part 8 - Data Modeling and App Architecture (iOS, Xcode ...

How do you organize your app in a way to make it easy for you? This is answered with app architecture. I won't be teaching any specific architecture but I cover the subject briefly to give you an understanding of its purpose.



Then we will begin modeling our data by making classes to hold it. Then we'll create function templates to create, read, update and delete (CRUD) mock data.



Saturday, May 5, 2018

Itinerary App - Part 6 - Finding Color Schemes for Mobile Apps

Are you struggling with finding the right colors for your mobile app? Not sure where to begin? Watch this video to learn more about colors and tools that will help you find an appropriate color scheme for your app!



3 Ways for Removing Creative Block

Do you find yourself stuck with your design? Can't find a good font? No color scheme will work? You might have "Creative Block"!



Tuesday, April 10, 2018

Itinerary App - Part 5 - Finding Awesome Fonts for Mobile Apps

Do you want to give your app a custom look that differentiates it from the rest of the thousands of apps out there? Well, a great way to do this is by changing the default font.



Tuesday, April 3, 2018

Itinerary App - Part 4 - Mobile App Design Tutorial

In this video I'm going to give you a simple method to get you started in designing UI (user interface or screens) for mobile apps. We will look at designing them using programs or paper and then I'll actually make some wireframes for the app we are going to build in this series.



Saturday, March 31, 2018

Itinerary App - Part 3 - Organizing Your Project: How To Get Things Done

In part 3 we will be looking at different ways you can organize your thoughts and ideas in order to get your app built. Writing things down will lead you to organization. Then organizing will lead to action!

You will learn what a minimum viable product is and how we use our tools to separate out what we will and won't do for version one of the app.




Saturday, March 24, 2018

Itinerary App - Part 2.2 - Source Control for Beginners (iOS, Xcode 9, S...

This is chapter 2 of the Source Control part of the Itinerary App Series. Using Xcode we will be exploring what branching and merging are in Git.

Source Control for Beginners Chapter 1: https://youtu.be/3zErxtbrB2I



Monday, March 19, 2018

Itinerary App - Part 2.1 - Source Control for Beginners (iOS, Xcode 9, S...

In this video we are going to explore what "source control" or "version control" is. We will look at two options for Source Control: GitHub and Bitbucket. We're going to pick one and connect our project to it. 





Then we'll also explore the built-in features for source control/version control inside of Xcode 9, view our changes and make commits to our local and remote repositories.



 This video is for absolute beginners who are not familiar with source control and may have never connected a project to an external source control provider.

Monday, March 12, 2018

Itinerary App - Part 1 - Introduction (iOS, Xcode 9, Swift 4)

This is the beginning of a series of videos in which we start a project to build an Itinerary app in Xcode using Swift. We will explore the creation process including some project management, managing a code repository, design, icons, coding, and so on.



This is the introductory video that introduces this mini-course of iOS app project management and development. We will be covering a variety of topics that are all included in the process of building an app.



All we will be doing in this video is simply creating a starting project and getting it ready for the next steps. Welcome to the course!



Note: I may create another series afterwards that explores different data sources to plug into this app. Stay tuned and we will see!



Sunday, February 18, 2018

UITableView Row Swipe Actions (iOS, Xcode 9, Swift 4)

Since iOS 11 you now have built-in support to swipe your UITableViewCell right or left and be able to add multiple buttons or "actions" to the cell.

Watch this video to learn how to add swipe actions no matter which way you swipe. I also show you the new way to swipe to delete. You will learn how to change color and add icons as well as enabling or disabling the full swipe feature.

As a bonus, you will also learn why the term "leading" and "trailing" are used instead of "right" and "left" and how to configure your project to simulate a language that reads from right to left.




Saturday, February 10, 2018

Memory 4 - Fixing Common Memory Problems: Reusable Popups (iOS, Xcode 9,...

This one video is the end of the Reusable Popups and the Swift Memory Mastery series. Ending both series in one video.

Before I could teach how to fix common memory problems in the Reusable Popups project I first had to teach you how to become masters of Swift Memory!

In this video you will be learning common mistakes, leaks, and other memory problems with:
* NotificationCenter
* Callbacks
* Delegates

And you will learn how to view or graph out memory problems and how to pick out which way to fix it. There are always multiple solutions.

You will gain better understanding of:
* Memory leaks
* Retain cycles (circular references, reference cycles)
* Automatic Reference Counting
* Weak and Unowned keywords


Thursday, January 18, 2018

Memory 3 - Fixing Memory Leaks in Closures with Capture List (iOS, Xcode...

Swift Memory Mastery Series - Part 3



Don't worry if you don't know what a closure or capture list is. This video will teach you.



You will learn:

* What closures are

* How to pass data into closures

* How closures can obtain values outside of themselves

* How to explicitly pass data into closures

* How to change the strength of the value coming into a closure to weak or unowned

* How to create a memory leak (retain cycle) with closures (very common)

* How to fix closure memory leaks with capture lists

* Understanding memory leaks in closures



Friday, January 12, 2018

Memory 2 - Finding and Fixing Memory Leaks (iOS, Xcode 9, Swift 4)

Swift Memory Mastery Series - Part 2

This video is packed with a lot of good info. You will learn:
* How Swift manages and allocates memory
* How Swift determines when it's ok to remove objects from memory
* Automatic Reference Counting (ARC)
* Dependencies and ARC
* Retain Cycles (Also known as: Retention Cycles or Circular References)
* Strong, Weak and Unowned References
* The Debug Memory Graph tool in Xcode

* Using Instruments Leak profiler to find memory leaks




SwiftUI Search & Filter with Combine - Part 3 (iOS, Xcode 13, SwiftUI, 2...

In part 3 of the Searchable video series, I show you how to use Combine in #SwiftUI for the search and filter logic connected to the searcha...