# data[].attributes.body
https://airtable.com/shrZSwY1pD8ffb6nG/tblLigAwHMZkruBds/viwaBleGxzFZaXoZ2

# data[].attributes.attachment_link.description
Airtable is a low-code platform for building collaborative apps. Customize your workflow, collaborate, and achieve ambitious outcomes. Get started for free.

# data[].attributes.attachment_link.readable_text
In this article, I'll walk through a project where we create a simple mp3 (audio) player using SwiftUI in Swift Playgrounds and a library called Subsonic. The Subsonic library is developed by Paul Hudson from Hacking with Swift, and it helps us to manage audio playback more efficiently and simply. I'll break down the code so that High School students can understand the concepts and steps involved in creating this project.

To keep this project simple everything will be contained within the ContentView. If you aren't familiar with a struct or this is your first ever SwiftUI I would recommend that you check out the following video.

# data[].attributes.attachment_link.title
Create a simple Mp3 Player with SwiftUI and Subsonic - Daniel Budd

# data[].attributes.attachment_link.description
In this article, I'll walk through a project where we create a simple mp3 (audio) player using SwiftUI in Swift Playgrounds and a library called Subsonic. The Subsonic library is developed by Paul Hudson from Hacking with Swift, and it helps us to manage audio playback more efficiently and simply.

# data[].attributes.attachment_link.description
Please click the link to complete this form.

# data[].attributes.attachment_link.readable_text
Paul Hudson @twostraws

We're back to another technique project, and this time we're going to be looking at something fast, beautiful, and really under-valued: animations.

Animations are there for a few reasons, of which one definitely is to make our user interfaces look better. However, they are also there to help users understand what's going on with our program: when one window disappears and another slides in, it's clear to the user where the other window has gone to, which means it's also clear where they can look to get it back.

In this technique project we're going to look at a range of animations and transitions with SwiftUI. Some are easy - in fact, you'll be able to get great results almost immediately! - but some require more thinking. All will be useful, though, particularly as you work to make sure your apps are attractive and help guide the user's eyes as best as you can.

As with the other days it's a good idea to work in an Xcode project so you can see your code in action, so please create a new App project called Animations.
Sponsor Hacking with Swift and reach the world's largest Swift community!

Link copied to your pasteboard.

# data[].attributes.attachment_link.description
Paul Hudson @twostraws We're back to another technique project, and this time we're going to be looking at something fast, beautiful, and really under-valued: animations. Animations are there for a few reasons, of which one definitely is to make our user interfaces look better.

# data[].attributes.attachment_link.readable_text
Paul Hudson @twostraws
Updated for Xcode 14.0 beta 1
@Binding lets us declare that one value actually comes from elsewhere, and should be shared in both places. This is not the same as @ObservedObject or @EnvironmentObject, both of which are designed for reference types to be shared across potentially many views.

For example, we might have a ContentView with an @State property storing whether a child view is being presented or not, like this:

struct ContentView: View { @State private var showingAddUser = false var body: some View { VStack { // your code here } .sheet(isPresented: $showingAddUser) { // show the add user view } } }

That uses showingAddUser for the isPresented parameter of our sheet, which means when that Boolean becomes true the add user view will be shown. However, how can we allow the add user view to dismiss itself if it needs to - if the user taps a Done button, for example?

What we want to happen is for the add user view to set showingAddUser back to false, which will cause ContentView to hide it. This is exactly what @Binding is for: it lets us create a property in the add user view that says "this value will be provided from elsewhere, and will be shared between us and that other place."

So, we might create an add user view like this:

struct AddView: View { @Binding var isPresented: Bool var body: some View { Button("Dismiss") { isPresented = false } } }

That property literally means "I have a Boolean value called isPresented, but it's being stored elsewhere." So, when we create that AddView to replace the // show the add user view comment from earlier, we'd need to provide the value so it can be manipulated:

.sheet(isPresented: $showingAddUser) { AddView(isPresented: $showingAddUser) }

This allows both ContentView and AddView to share the same Boolean value - when it changes in one place it also changes in the other.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Similar solutions...

Link copied to your pasteboard.

# data[].attributes.attachment_link.description
Paul Hudson @twostraws Updated for Xcode 14.0 beta 1 @Binding lets us declare that one value actually comes from elsewhere, and should be shared in both places. This is not the same as @ObservedObject or @EnvironmentObject, both of which are designed for reference types to be shared across potentially many views.

# data[].attributes.body
https://www.ralfebert.com/ios/swift-uikit-uicolor-picker/

# data[].attributes.attachment_link.description
Generate Swift UIColor code by RGB or hex value using this Photoshop-like color picker.

# data[].attributes.body
All you need to know about the ADE program.

https://education.apple.com/#/home/rp/T042370A

# data[].attributes.attachment_link.title
Learning Center - Apple Education Community

# data[].attributes.attachment_link.description
Visit the Apple Education Community to discover great learning resources and learn new skills to become an Apple Teacher.

# data[].attributes.attachment_link.title
Learn how to add, edit and delete items in SwiftUI Lists

# data[].attributes.attachment_link.title
Creating and Combining Views - Introduction to SwiftUI

# data[].attributes.attachment_link.description
This video shows learners how to utilise HStack, VStack and ZStacks to layer and order their interface components.

# data[].attributes.attachment_link.title
Swift Student Challenge | Apple Developer Forums

# data[].attributes.attachment_link.description
Connect with fellow developers and Apple experts as you give and receive help on Swift Student Challenge

# data[].attributes.attachment_link.title
SwiftUI Stylesheets with Extensions - 20 - Introduction to SwiftUI

# data[].attributes.attachment_link.readable_text
Paul Hudson @twostraws
Updated for Xcode 14.0 beta 1
@Binding lets us declare that one value actually comes from elsewhere, and should be shared in both places. This is not the same as @ObservedObject or @EnvironmentObject, both of which are designed for reference types to be shared across potentially many views.

For example, we might have a ContentView with an @State property storing whether a child view is being presented or not, like this:

struct ContentView: View { @State private var showingAddUser = false var body: some View { VStack { // your code here } .sheet(isPresented: $showingAddUser) { // show the add user view } } }

That uses showingAddUser for the isPresented parameter of our sheet, which means when that Boolean becomes true the add user view will be shown. However, how can we allow the add user view to dismiss itself if it needs to - if the user taps a Done button, for example?

What we want to happen is for the add user view to set showingAddUser back to false, which will cause ContentView to hide it. This is exactly what @Binding is for: it lets us create a property in the add user view that says "this value will be provided from elsewhere, and will be shared between us and that other place."

So, we might create an add user view like this:

struct AddView: View { @Binding var isPresented: Bool var body: some View { Button("Dismiss") { isPresented = false } } }

That property literally means "I have a Boolean value called isPresented, but it's being stored elsewhere." So, when we create that AddView to replace the // show the add user view comment from earlier, we'd need to provide the value so it can be manipulated:

.sheet(isPresented: $showingAddUser) { AddView(isPresented: $showingAddUser) }

This allows both ContentView and AddView to share the same Boolean value - when it changes in one place it also changes in the other.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Similar solutions...

Link copied to your pasteboard.

# data[].attributes.attachment_link.description
Paul Hudson @twostraws Updated for Xcode 14.0 beta 1 @Binding lets us declare that one value actually comes from elsewhere, and should be shared in both places. This is not the same as @ObservedObject or @EnvironmentObject, both of which are designed for reference types to be shared across potentially many views.

# data[].attributes.attachment_link.description
100 Days of Code Journal [Boothroyd, Holly] on Amazon.com. *FREE* shipping on qualifying offers. 100 Days of Code Journal

# data[].attributes.attachment_link.title
How to create a TableView in SwiftUI - Introduction to SwiftUI

# data[].attributes.attachment_link.description
TableViews are heavily used in App Development for displaying lists of content in interesting and interactive ways. SwiftUI has made this design feature a lo...

# data[].attributes.headline
How to receive user input with @State property

# data[].attributes.subject
How to receive user input with @State property

# data[].attributes.attachment_link.title
How to receive user input with @State property wrapper - Introduction to SwiftUI

# data[].attributes.body
This is the code snippet from the @State demonstration

# data[].attributes.body
Download example playground of the live struct demonstration I used, that was linked to the "Types" video.

# data[].attributes.attachment_link.title
What is a Type? - Introduction to SwiftUI

# data[].attributes.attachment_link.description
This video was created to help learners understand more deeply what a Type is and how it can used to represent real objects.

# data[].attributes.body
In this activity you will revise what you have learnt to understand what makes up the "struct".

# data[].attributes.attachment_link.title
What is a Struct? - Introduction to SwiftUI

# data[].attributes.attachment_link.description
Introduction to SwiftUI using Swift Playgrounds. This video explains the basically layout of a structure used to present a view.

# data[].attributes.attachment_link.description
Share your videos with friends, family, and the world

# data[].attributes.body
Cheatsheets and sticker designs for encouraging students to progress in their Swift Learning.

# data[].attributes.attachment_link.readable_text
As a part of the Coding Clubs I also run Coding Camps which neighbouring schools. The goals of the camps were to get students enthused about coding, teaching them important skills necessary for success in programming and to establish a network of collaborative coders between the schools.

As a reward for attendance for the camp and competition participation I began a "belt system" which students could progress through. In addition, to reward this also became a point of conversation between junior and senior programmers as they saw their stickers around the school.

Below I have included links to Swift Cheatsheets for the various coding levels, as well as, the sticker designs (I used Sticker Mule for printing).

# data[].attributes.attachment_link.title
Coding Club Cheatsheets for Swift - Daniel Budd

# data[].attributes.attachment_link.description
Apple has recently released Coding Club Kits through Apple Teacher . The kits contain a huge range of resources to help you get your Coding Club up and running. I've had a huge amount of success running Coding Club's across numerous schools.

# data[].attributes.attachment_link.description
This project was designed to introduce students to Machine Learning terminology, toolsets and consider ethical implications of bias within datasets. Students can experiment with the features of the machine learning model and don't need to write an algorithm for developing the classifier.