As someone who is a fan of your account and a "student" of your videos, I can't think of a good reason why you would think certain things are a "waste of time" and if they truly are, why introduce them at all? It's a pattern in a few of your videos to skip over minuscule details as if they have no importance. All things considered, mainly the fact that this is an "Intermediate" tutorial, minor details to you are extremely important to those who choose to learn from you.
@SIGMA_UNITE11 сағат бұрын
where can i donate
@SIGMA_UNITE12 сағат бұрын
you are the goat
@rishabhbhatia1847Күн бұрын
AppStorage is really so easy compared to userDefaults. Apple is doing great things with swift.
@shisuiuchiha2137Күн бұрын
Hi I love how u teach coding. Thank You very much ❤ I have just completed your playlist „basics“ and I m sure I couldnt tell you everythig or much of the subjects in the playlist just from my mind. So should I return to the playlist „basics“ to get a better grip on the basics, or it is enough to see it and just continuing this playlist? Sorry for my bad english.
@SwiftfulThinkingКүн бұрын
Just start this one! You’ll remember more as we keep coding 👍
@shisuiuchiha2137Күн бұрын
@ thank You
@rishabhbhatia1847Күн бұрын
latest update for iOS17+: .environmentObject has become .environment and @EnvironmentObject is now @Environment(ClassName.self) - Nick has covered this in video #76
@spencersedanoКүн бұрын
Nice Xcode tutorial, the basics stay the same even if now it's a different version
@rishabhbhatia1847Күн бұрын
This will work even without using @Bindable in the childView and using @State instead. I tried it. Any idea when exactly to use @Bindable?
@abdulmomen1145Күн бұрын
While pushing the view from a navigationController from a UIKit view controller it does not backs to UIKit navigation controller
@the_avii_7Күн бұрын
Fun facts: 🤗 1. You can create as many buttons as you can for alert. 2. Every button tap will dismiss the alert. 3. You can't get rid of the 'Cancel' button, it will always be there. Either this will be provided by the system or by your `role: .cancel` button.
@lucasc0rreaКүн бұрын
Congratulations on the videos, I really like the way you approach complex subjects and explain them in a simple way, I hope you continue with the work, it's been 6 months without posting any videos.
@KarthikChintalaOfficialКүн бұрын
Do you have any GitHub link for setting up DI in the @main section of the app?
@KozaKrisz2 күн бұрын
Thank you! 🙂
@rishabhbhatia18472 күн бұрын
as of Nov 2024, you don't need to use all this. Simply, use @state for a class instance variable and put @Observable before a class definition. no need to use @published, conforming to observable object and using @observedobject. Swift has made it simple now.
@SwiftfulThinking2 күн бұрын
You're right! This is covered in video #76 in this series. However, I believe these are still important to learn because the new Observable macro is for iOS 17+ only and most existing SwiftUI apps / companies will be supporting OS below that for several more years.
@rishabhbhatia1847Күн бұрын
@@SwiftfulThinking Thanks for the clarification. I would request you to put in the description of videos if the features are updated and link to new videos for those features. Awesome course bdw.
@AkbarshahJumanazarov2 күн бұрын
Good explanation!
@the_avii_72 күн бұрын
Findings related to colors 1. `.accentColor()` modifier is deprecated !!! ❌ 2. `.tint()` modifier is also not working. ❌ 3. If we use `.foregroundStyle`, it changes every view colors. ❌ 4. If you want to change disclosure indicator color, apply tint on list. ✅ 5. If you want to change navigation bar Edit/Add buttons, then fill color in `AccentColor` template in `Assets` ✅
@jamesgilligan6714 күн бұрын
Love the video but my only wish is that you show us what to DO with the picker. IE how it works in a function, how to call the tags, etc. Good to have a picker but if I cant do anything with it then i am stuck. Thanks again.
@elGordoRoura4 күн бұрын
I decided to proceed with this approach. I updated it for Swift 6 support and was prepared to integrate it into my own Swift package-until I realized that you had already implemented a similar solution yourself. It’s incredible to see how you’ve organized and abstracted the layers of your code into reusable components. The main difference between my implementation and yours is that I chose to return all AuthManager functions as FirebaseAuth.User instances instead of objects like GoogleSignInResult or other result types. I believe this approach provides slightly more control, as it aligns directly with Firebase's authentication model. I still need to add testing and integrate analytics, so I’ll follow up as I get those added in. Additionally, I’ve incorporated a feature that allows users to add a username during sign-up. They can then choose to sign up with Google (or any other OAuth provider) or sign in with the same provider. If they are signing up, the username is appended to their combined account and Google account. Otherwise, the app loads their previous information from the sign-in attempt or defaults to a newly autogenerated username along with their provider's email and full name. Would love to get your thoughts on all of it and really love seeing your teaching style. New subscriber for sure!!!
@PrivatePrivette4 күн бұрын
This series is great thanks Nick!
@aminyaghmouri98615 күн бұрын
Thank you so much.
@SwiftfulThinking5 күн бұрын
You're welcome!
@the_avii_75 күн бұрын
Why `clockwise: true` behave as anticlockwise at 6:30 ?
@rishabhbhatia18475 күн бұрын
Pro Tip: Goto Xcode settings and enable "Code Folding Ribbon". Then just click on the ribbons to fold the respective code blocks.
@stpaquet6 күн бұрын
To play the dotLottie files you need the dotLottie for iOS and not Lottie. If I'm correct the dotLottie for iOS can also be used to play JSON files.
@mohamedosama66976 күн бұрын
I think you applied Strategy design pattern, Good job Nick👏👏
@elvisfeagin21456 күн бұрын
It is so weird! Seems in Xcode 16.1 / iOS 18.1 pulldown gesture no longer works in the way it is presented here. The code compiles. I thought I mistyped something so I copied and pasted code directly from Nick's GitHub. Still the pulldown gesture does not do anything in the canvas preview. Tried it on simulator ... same problem. Has something changed with ScrollView behavior? Or is there a setting somewhere in Xcode I need to enable?
@elvisfeagin21456 күн бұрын
My bad. Forget my alarmist message 🙄 ... It appears the touch sensitive area is on the ScrollView, and the code behaves as expected. What I was doing was trying to touch and drag from the navigation title and above. And, of course, the touch gesture is not detected above the ScrollView. I've learned. Now I know.🤭
@halvesbatochi6 күн бұрын
Great serie videos!
@justmytraining41906 күн бұрын
this is magic!
@Hassan669k6 күн бұрын
Awesome. Can you use color codes like CSS?
@Lrriedley7 күн бұрын
Facebook video would be extremely helpful
@98Mrjailbreak7 күн бұрын
To have the little pop up for "copy" you have to hold control key while clicking
@zenBoy3237 күн бұрын
For those here in 2024 when .navigationBarItems is deprecated here is what you should be using instead: .toolbar { ToolbarItem(placement: .navigationBarTrailing) { NavigationLink { RandomScreen(fruitViewModel: fruitViewModel) } label: { Image(systemName: "arrow.right") .font(.title) } } }
@danielhutchings97047 күн бұрын
Thanks Nick for the course. It was excellent. I went on to further investigate GIF Flow and found out that Trunk-based Development appears to be superseding it.
@sheetalpahadi8 күн бұрын
Very very informative
@joescorner2938 күн бұрын
Where's edit?
@caiocardoso62888 күн бұрын
Refreshable
@imprsnt8 күн бұрын
The explanation that changes to class object need to synchronize across all it's instances, and that leads to loss of performance, is not the correct mental model. There is only a single object/instance in the heap that all the references (i.e pointers) point to. Changing the underlying object has no overhead of synchronization.
@DouglasRutledge9 күн бұрын
How to get Section work with live data. I tried but nothing seems to work. Section value keeps displaying with every record instead of grouping
@DouglasRutledge9 күн бұрын
You're still my best coder to watch! For years and years, one day I'll learn something. haha
@brunoherbots9 күн бұрын
There are people who are looking like crazy to get this to work in the new 16.1 version of XCODE. I know I did. To help you my code after searching. : // // PickerBootcamp.swift // SwiftfullThinkingBootcamp // // Created by Bruno Herbots on 15/11/2024. // import SwiftUI struct PickerBootcamp: View { var filterOptions: [String] = ["All", "Active", "Completed"] var valueOptions: [Int] = [1, 2, 3] @State var selection: Int = 1 @State private var selectedPlanet: Planets = .earth @State private var selectedColour = 1 @State private var selectedDay: dayNames = .mon let colours = ["red", "blue", "yellow"] enum Animal: String, CaseIterable, Identifiable { case dog case cat case bird var id: Self { self } } @State private var selectedAnimal = Animal.dog enum Planets: String, CaseIterable, Identifiable { case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune var id: Self { self } } enum dayNames: String, CaseIterable, Identifiable { case mon, tue, wed, thu, fri, sat, sun var id: Self { self } } var body: some View { VStack { Text("Picker Bootcamp") .font(.largeTitle) Text("Basic Code example") .font(.headline) Picker(selection: $selectedColour, label: Text("Select Colour")) { ForEach(0..<colours.count, id: \.self) { Text(colours[$0]) } } Text("Use of ENUM") .font(.headline) Picker("Animal", selection: $selectedAnimal) { ForEach(Animal.allCases) { animal in Text(animal.rawValue) } } Text("Inline picker STYLE") .font(.headline) List { Picker("Planet", selection: $selectedPlanet) { ForEach(Planets.allCases) { planet in Text(planet.rawValue.capitalized) } } } .pickerStyle(.inline) Text("Wheel STYLE") .font(.headline) List { Picker("Planet", selection: $selectedPlanet) { ForEach(Planets.allCases) { planet in Text(planet.rawValue.capitalized) } } .pickerStyle(.wheel) } Text("Navigation Link Picker STYLE") .font(.headline) Text("This picker style requires a NavigationStack as the root view of the body otherwise, it wouldn’t work. The navigation link picker style is ideal when you want to present a new screen for each selection. ") .padding(.leading, 30) .multilineTextAlignment(.leading) Text("Segmented Picker STYLE") .font(.headline) List { Picker("dayName", selection: $selectedDay, content : { ForEach(dayNames.allCases) { day in Text(day.rawValue.capitalized) } }) .pickerStyle(.segmented) .background(.gray) } } // end top VSTACK } } #Preview { PickerBootcamp() } Hopefully It'll help out.
@ДмитрийСельянов-ы5г9 күн бұрын
If we talk about the code before 13:00 Some updates may have been released, but the counter resets when you return to the main page. Init and deinit are also triggered immediately
@TechWithCoffee10 күн бұрын
Is there any way to track the cursor position in texteditor?
@rishabhbhatia184710 күн бұрын
for deprecated features for which you have created new videos, can you add in the description of the respective video the new video link so that we know that there is a new video for this and that this is deprecated.
@the_avii_710 күн бұрын
Favorite Part of the series. Thank you ❤ I thing I noticed `Animation.default` sometimes doesn't work correctly while `Animation.Linear` works in XCode 16.1
@Swift_Alvar11 күн бұрын
Really has been fantastic, thanks for your work !😀
@SwiftfulThinking11 күн бұрын
Thanks! Glad it helped 👍
@Swift_Alvar11 күн бұрын
Thanks was good to see how its works in the real teams projects ;)