Book Image

SwiftUI Projects

By : Craig Clayton
Book Image

SwiftUI Projects

By: Craig Clayton

Overview of this book

Released by Apple during WWDC 2019, SwiftUI provides an innovative and exceptionally simple way to build user interfaces for all Apple platforms with the power of Swift. This practical guide involves six real-world projects built from scratch, with two projects each for iPhone, iPad, and watchOS, built using Swift programming and Xcode. Starting with the basics of SwiftUI, you’ll gradually delve into building these projects. You’ll learn the fundamental concepts of SwiftUI by working with views, layouts, and dynamic types. This SwiftUI book will also help you get hands-on with declarative programming for building apps that can run on multiple platforms. Throughout the book, you’ll work on a chart app (watchOS), NBA draft app (watchOS), financial app (iPhone), Tesla form app (iPhone), sports news app (iPad), and shoe point-of-sale system (iPad), which will enable you to understand the core elements of a SwiftUI project. By the end of the book, you’ll have built fully functional projects for multiple platforms and gained the knowledge required to become a professional SwiftUI developer.
Table of Contents (13 chapters)

Creating a sidebar

Our navigation will only have three pages: the dashboard, roster, and schedule. Inside of the Navigation folder, open AppSidebarNavigation and let's first create an enum to represent each of these pages.

Inside the struct, above the body variable, add the following enum:

enum NavigationItem {
    case dashboard
    case roster
    case schedule
}

Our enum will allow us a way to keep track of the currently selected navigation item when using the sidebar. From the designs, we know that the dashboard will be the first page we want to load.

We need to create a variable to keep track of the selected NavigationItem. After the enum, add the following private variable:

@State private var selection: Set<NavigationItem> = 
  [.dashboard]

We now have what we need to create a sidebar. Let's create our sidebar now by adding the following after the body variable:

var sidebar...