SwiftUI Masterclass: Build To Do List App
ฝัง
- เผยแพร่เมื่อ 4 ต.ค. 2024
- In this SwiftUI masterclass, you will learn to build a full fledged iPhone app using Swift, SwiftUI, and Xcode. We will be building a functional to do list app from scratch. We'll explore the various constructs of building beautiful User Interfaces for your app. Next, we will integrate Google Firebase as a backend for the app. This backend will let the user Register and Log In to your new app.
We'll dive into the world of saving data into a database - to do list items - and getting the users saved information. You'll get a chance to build reusable components like headers, Calendars, buttons, and more.
Additionally, we'll get into the details of working with data in a declarative UI framework like SwiftUI. We'll leverage best practices with ViewModels, StateObjects, Bindings, and more.
By the end of this FREE masterclass, you'll have a beautiful and functional SwiftUI iPhone app to show off to your friends.
You can access the full project code by supporting on Patreon: iosacademy.io/...
💻 Source Code: / iosacademy
🎥 Subscribe for more: www.youtube.co...
😎 Like my teaching style? Check out some of my most popular courses! courses.iosaca...
👉🏼 Connect (personal LinkedIn) / afrazsiddiqui
🚀 Follow on LinkedIn / ios-academy
** Popular Series
Building Instagram: courses.iosaca...
Building TikTok: / @iosacademy
SwiftUI for Beginners: ios-academy.te...
** Get Skillshare free for 2 Months and learn iOS
www.skillshare...
** Manage all your investments from app earnings on Betterment!
bit.ly/3eBwlI9
** Grow your own TH-cam tech channel with TubeBuddy:
www.tubebuddy....
#swift
The Firebase integration made this course much better than other starter classes. Thank you.
Thank you so much man, you are a great teacher. Made an app for my girl's mom's birthday that impressed the ever-living cheek out of her family building on what you put together in this video. I owe you a whole case of beer bro
Great tutorial that covers the basics of MVVM, SwiftUI and Firebase.
Thanks!
🔥🚀 First tutorial for Xcode and i loved it. Woderful step-by-step guidance into the ios programming world. Thanks a lot! ✨
I just finished the course and I've a working app on my computer :) Thank you so much for that. It was an amazing introduction to SwiftUI for me, I like starting big so I will pick so many things on the way and it was a perfect place for me to start. You're an incredible teacher and the pace of the course suited my learning so well. What I would recommend to do is to build upon the project they already have after following the video. I personally added "rename" feature, history of deleted items, preserved for 3 days, forgot the password feature (also comes with not being able to create a new account on the same email) and notification when the item is overdue. It's not that hard to implement after having a working base project and I hope everybody could learn something new :)
Thanks a lot! Awesome content🔥
Even though a todo list app sounds simple and basic but your tutorial is really helpful to understand the unique concepts of SwiftUI. Especially the integration with Firebase, your explanation was very intuitive on that.
Glad it was helpful!
@IOS Academy, Thank you for this great tutorial. For an retired experienced and passionate programmer, this tutorial was excellent. The best so far for a novice SwiftUI person. I did a few things differently along the way in the view-models and the views, including getting the currentUserId directly in the part where you made it a bit overly complex, but hey, that's me. Very well done and much appreciated! Looking forward to the next one from you && subscribed.
I enjoy so much watching this as my first tutorial. You really have great skills of presenting, thank you for sharing
Fantastic tutorial! I've been tasked by the startup I work for to build a prototype for a new Vision Pro app, and this really helped me get up to speed with X Code and Swift/SwiftUI. 🔥🚀
Glad it was helpful!
Great tutorial! Thx!
Are you done with your code?
I need some help
I'm so glad I stumbled upon this gem.
The padding @ 49:28 worked perfectly for me.
goat 🔥🚀 thanks for the tutorial!!!
I really appreciate how not basic this tutorial is. I am a programmer knowing at least 5 languages and know 3 of them to an advanced level. I am just looking to build myself something for fun. I want a full app with proper coding components, not an app that does nothing but dealing cards with no text field, no traditions, no nothing.
stop bragging, videos aren't just made to serve your needs.
Thanks, I create three apps with your lessons 😉
Can you help me
Great tutorial, congratulations!
Altough this video and tutorial is great and I apreciate it to the fullest, I find it a bit quick sometimes. From a teaching perspective it would be benefitial to navigate a little slower, especiale when for example cutting parts of code and pasting them when outsourcing to a new file. I am a sw developer myself, I know how things are when you are in the "tunnel" but for people outside, especially when not used to the language and IDE, it is now always easy to follow. Still, thanks a lot for the video!
awesome so far! i just finished the first lesson in this video and i feel like i’ve already progressed in my xcode knowledge. highly recommend
This would be clutch as a beginner course if we just switch Firebase to SwiftData or some local db. At least that's my perspective as a mobile dev trying to pick up swift as soon as possible and not trying to get bogged down with creating a firebase account. Not sure how much that helps but some feedback :) Loving the other videos nonetheless!
It’s really simple to have a local db I could help you
This was filmed before SwiftData was announced. No doubt they'll be a Swift Data course int he future.
hey man this really works on my device! Thanks for sharing.
Great tutorial!
amazing video, thanks bro!
나도 만들어봐야겠다!
🔥🚀 Hey you! Thanks for this amazing video. I have been studying the basic of Swuift and swuifUI
great tutorial, THANKS.
You're welcome!
Great video, would be nice to add chapter markers for each section.
Perfect toturial
Thanks
Hey there, great masterclass!
Thanks for your tutorial!
You're welcome 😊
🔥🚀 Great Video. Thank you
Every day iOS Academy the best of the best
thanks for your help.
Very helpful thank you ✌
great thank you for your effort !
Thank you!
really helpful .
your voice reminds me of bucky from youtube also who taught me on android programming before. 😂
🔥🚀 Much appreciated!
Thank you for the tutorial. Curious, would an app like this meet the requirements to be published in the App Store?
Thanks for Great Tutorial. Useful Content.
All that jazz 🤙🏻
what device are you running xcode on? your builds are so quick, on my mac air m1 it takes aaaaaages
Hey! Great video! Thank you very much!
I have a question, though. When we open the app after the user is already logged, we have the Launch Screen being displayed, then we have the Login Screen displayed for a split of a second and then we have the ToDoListView page.
I understand why it's happening, but I wonder how to prevent this to happen. Is there a way to "delay" the launch screen transition, so this verification is first executed in background? Or is there a way to dismiss the launch screen programmatically?
Thanks!
View models start: 51:00
Great video, can you update the Chat app to this latest swift?
When I add firebase package auth doesn't appear, why?
Hey, I found a solution.
Just click not the app in the very top of the Xcode file explorer.
Then scroll down to "Frameworks, Libraries, and Embedded Content" (in the "General" tab)
Click the + icon
Select FirebaseAuth
Should work after that!
My app is stuck at Loading profile but otherwise good tutorial
Reel reel good 👍❤
On the login screen, I am not seeing the error message when it is supposed to pop up. I have been getting "Unable to simultaneously satisfy constraints." with a bunch of NSLayoutConstraint messages and have not been able to figure it out for two days. Any help would be appreciated, thanks!
I can't find the part where you fix where the keyboard is covering the text field entry boxes? When I try to type using my device as a simulator, the keyboard pops up over the text fields.
brilliantly done...very helpful for me to brush up on my swift skills after some time away while also learning something new. Very clear, very simple explanations
How to solve the issue when the keyboard is opened then new around here view covers up the login form
Verifying ios-sdk while adding package is just stucked.
🔥🚀
FirebaseFirstoreSwift isn't in the SDK. Was the name updated to something else?
Just FirebaseCore I believe
Stupid question: How did you pull up the terminal to view executed print statements?
Cmd Shift y - totally fair question :)
I like it! You're beautiful!
How do you get the iphone model at the left side of the screen
What is different between StateObject and ObservableObject?
I have this same question, and according to ChatGPT:
In SwiftUI, both `@StateObject` and `@ObservedObject` are property wrappers used to manage the state of objects within a view. However, there are some differences in their behavior and usage:
1. `@StateObject`:
- `@StateObject` is used to declare a property that represents the state of an object owned by a particular view.
- It creates and owns the object within the view, and the object persists as long as the view exists.
- When the view is recreated due to a change in its parent's state, the `@StateObject` property will be initialized with a new instance of the object.
- It is typically used for objects that are specific to a single view and should not be shared with other views.
2. `@ObservedObject`:
- `@ObservedObject` is used to declare a property that represents an external object that the view needs to observe for changes.
- The object is typically created outside the view and passed in as a dependency.
- The view doesn't own the object, but it monitors the object for changes and updates its UI accordingly.
- When the observed object changes, the view is automatically refreshed to reflect the new state.
- It is suitable for sharing the same object instance across multiple views.
In summary, `@StateObject` is used for managing the state of an object owned by a view, while `@ObservedObject` is used for observing changes in an external object passed into a view.
I seem to have a small bug, where when I tap an item as done it duplicates, and only than I can delete the duplicate. The other item just keeps existing.
Can you help me out some way? I double checked the code and it seems good but I am really lost on how to fix it.
1:42:27
Isn't dueDate >= Date() correct? I take it we're creating items to do after now (current timestamp). Anything else would be now or in the past. Hopefully I'm thinking about this correctly.
For some reason I can't have MainView in the same folder as ToDoListApp, MainView preview works when it's in the root folder and ToDoListApp is in Other, but if I move MainView anywhere else, for instance the Views folder, it will not run the preview and gives the error "The preview provider must belong to at least one target in the current scheme in order to use previews". How can I go about resolving this and preventing it again in future projects?
40:41
Why does the RegisterView look fine in the Xcode preview, but is shifted slightly downwards in the simulator?
I love this video. Just a quick question. so when do you use a "?". Example: self?.insertUserRecord(id: userId). This is at time 1:07:50 in the video.
"?" is optional value type. When the value type is nil or if we are not sure whether there is a value or nil, we have to use "?" to avoid app crash.
Thank you my friend🙌🏽@@BishownathDhakal
why when I add swiftui files it gives me an error? but when it's only on Content View it Works?
source code available for download? for reference
I need help
great do you have this in more detail or do you know where I can find it. I've been trying to figure out how to sort them in date last opened, and date created?
you can provide a closure to a sort function and within that sort by however you like.
I have a problem with fetching profile data, probably it's connected to Firebase rules, somebody help me pls
How to plus notification into this project?
ps I'm a Newbie
How would you sort the To Do list items when retrieving the data?
you can add a toolbar button that can then call a function to sort the todos.
What do you think about Scrollview + Vstackk > list component in terms of performance? Cause I see you are using list here and I think is better to avoid use it
A bit subjective
I am Facing some issues can someone please help me with that
?
Hey! So in firebase, I am able to see the users in authentication but they're not showing up in the live database. Let me know how to fix this! Thanks!
Check your db security rules
@@iOSAcademy that worked! thanks so much!
I'm getting an error when trying to build app after creating the RegisterViewModel "App Delgate does not conform to UIApplicationDelegate protocol" - any thoughts how to fix?
Did you managed to fix this? can you help me with this
I really found this video useful but if you could avoid saying button in future videos, that would be great.
Miller Helen Jackson Richard Davis Cynthia
🤙
Can you please provide source code or github repo
Available for iOS Academy+ members
hello
Hi
goes too fast for beginners, even on slow playback, but good app tutorial. I'm not even new to software development. I have an AS degree, and I felt like it was too hard to follow
Dear lord, SwiftUI's system text fields are horrendously ugly
You talk too fast to be understood. Please try to demonstrate slowly. Because not everyone here is a professional like you. There are lots of beginners like me who needs a foundation about basic things. They need some time to understand an idea. Give us enough time to think. So, we can move forward with you.
This is great but around 1:05:00 (and before) I feel like it starts moving so fast. It's like adding 30 letters of code every 5 seconds and only explaining 1/5 of it and is super hard to keep up with
I do want to add though that this is awesome, thanks for making this for free!
Also around 1:29:00, maybe I'm too entry level, but it is confusing when you added all the userId stuff without explaining
@@will_huntare you done with your project I may need some help
Thanks
I got an error (Argument passed to call that takes no arguments) in this code:
private func insertUserRecord(id: String) {
let newUser = User(id: id,
name: name,
email: email,
joined: Date().timeIntervalSince1970)
time in video 1:09:35
Please hep me fix
🔥
Thanks bro, @afrazsiddiqui
after adding firebase packages , preview is not working .
🔥🚀