I wish I had enough money to buy you a car , lol. I have spent close to 100 hours watching videos and trying to figure out how to create individual screens. I am new to this and so many instructors don’t show the data and how it is coded and brought into The navigation. I had actually given up hope that you could create navigation without a list and here in your first video you have lit the flame that was exhaustedly going out. Thank you so much for being so specific and taking the time to show how everything works together.
Even though it’s been said before-I am just going to repeat: these are the types of videos that should be 1st-party-provided. Soooo well done, concise and to the point. Thanks a lot!! 😊
Wow - at last an explanation of the NavigationStack that not only makes sense but so cogently presented. Almost every other explanation I read and viewed was relying on telepathy for the transfer of knowledge. Thank you so much and wish Apple had the wit to follow your approach.
Stewart, this was excellent. Thank you for your efforts in making these and helping educate. You are very skilled at laying out information and building up the knowledge layer by layer. I shall buy you a ko-fi!
Stewart, your videos are a fantastic resource. I learned the subject material from this video, and I've sent it to others to be their learning guide. Thank you.
This 3 part tutorial is fantastic - you've earned a new subscriber. I've also learned the words homogeneous and heterogeneous - love these, great for explaining!
Loved this tutorial i am amazed and astonished that someone like you exists in this world and is able to give these lessons to such a degree i am your fan and will always support you ❤
Thank you!, I have edited my comments as I figured out how to make this navigation structure work with my coredata objects, not that I can explain it very well as I'm a novice programmer. I was making it more difficult than I had to. In essence the navigationLink "value:" was just the coredata object I was iterating over and navigationDestination "for:" was the class for the object along with self. What helped is Stewart's 2nd part video on this topic. I may be saying all this wrong but it worked and I was able to update my code with this new structure. Thanks again.
Thankyou Mr Lynch, very clear explanations (all of your videos) I am looking for SplitNavigation view & NavigationStack combination, bit not clear from SwiftUI documentation & how to implement, would care to share snippet of code ?
NavigationSplitView will collapse to a NavigationStack when your device is in compact width. Have you seen my video on NavigationSplitView? ua-cam.com/video/RsmMLLL8FB0/v-deo.html
very detailed explananation thank you. But there is one thing stucked my mind . Why does the random button, which normally gives the same appearance, give a different appearance after adding a path? Isn't the navigation stack have the default path anyway?
Well I need to navigate to more view from the subview but the problem is every time the navigationDestination mention in root view get called and navigation from subview fails some time any suggestions ? and also I need to pass the data from subviews which is being hurdle for me.
I'm late to the party but many thanks for this. I like the organization of content and the ability to load Views directly. After messing around with it I can jump around TopicViews by adding a navigationLink to a TopicView but that does add Views to the stack without removing them when you navigate back. Combined with what I learned in your Navigation Stack Part 2 tutorial I can add a NavigationPath and remove Views from the stack to navigate back two screens, go directly to the root menu screen, etc. (oops - I meant this to go on Enum Navigation)
is it possible to overwrite the default behavior of a list within navigation stack to not have chevron and replace it with info button instead? similar to the list found on iPhone Bluetooth page
See if this helps www.jessesquires.com/blog/2023/07/18/navigation-link-accessory-view-swiftui/#:~:text=The%20best%20way%20I've,another%20view%20using%20a%20ZStack%20.&text=This%20allows%20you%20to%20provide,foremost%20Label%20in%20the%20ZStack%20.
Thanks! I wonder how it works, when having two String values, but I want to have them on different views. For example: stringValue1 = author name, and stringValue2 = birthplace. Since I can only differentiate between String, Int, etc. this probably won't work, would it?
It threw are on different views, you have a different binding to the String. Perhaps I don’t understand your question. Feel free to send me an email with a small sample project that displays the issue and i will take a look.
I am building a test project for myself which is an app that can remember what shows I am watching. The app remembers what season I am currently on and what is the last episode that I have watched. I am using SwiftData for persistence. Now with all this in place, my main question is I started with NavigationLink inside NavigationStack to edit information on a show. but passing in data to the next screen using NavigationLink was not reliable. It was freezing the app. But after I restart the app every thing starts working. Then I switched the UI around to use .sheet on the ListView instead of NavigationLink. The app behaved every single time as it suppose to. In your opinion what are good use cases for NavigationLink and Presenting a sheet with .sheet modifier? Sorry for this long question.
@@StewartLynch Thank you for your quick response. I went back and checked, it is not hanging. It does navigate to the Edit screen but the screen is blank. Not even I see the navigation title. I only see a back button. Then when I kill the app and restart the app and then navigate all works normal.
@@StewartLynch That is kind of you. But I will certainly first try to fix it myself. If I fail I will send over the code. I am learning a lot from your videos.
There is still one aspect of this that is escaping me. I see that if I pass a `path` to `NavigationStack` (either an instance of `NavigationPath` or any `Array`), I can pop to the root screen. In the case of `NavigationPath` I can call `path.removeLast(path.count)`. In the case of an `Array` I can just set it to an empty `Array`. But this only seems to work if my `NavigationLink` instances are created with a `value` argument. If I instead create them with a `destination` argument, I can't find a way to pop to the root screen. Is that possible?
Don’t use the NavigationLink with destination any more Mark. Trigger the navigation based on a change of value and use the .navgationDestination(for:) to get an instance of that value and create the View for the destination there.
@@StewartLynch Yeah, I learned how to do that from your video and I see how that is useful in many scenarios. But sometimes each link goes to a specific view that isn’t based on a value. There can be a one-to-one relationship between links and views and I still would like the ability to pop to root.
You should always be able go link it to some value. Just create an enum with a case for each of your views then switch on the case to go to the destination.
@@StewartLynch That’s encouraging because that’s exactly what I did! I just wasn’t sure that was the best option. I’ll stick with that. Thanks Stewart!
I think you will find that the error is on your end. You are likely using Chrome and your security settings are not allowing zip downloads. Please try using Safari and you will find that it works. I just verified that the link works when using Safari.
Is there a way to use this navigationstack to automatically navigate to your next view? It seems like now when you want to navigate, you have to create a physical button or link to press and begin navigating to the next screen. However, you used to be able to use the navigation links isActive parameter and create an empty view ao that when the condition is met, you can automatically navigate without pressing anything Such as after a api call.
I wish I had enough money to buy you a car , lol. I have spent close to 100 hours watching videos and trying to figure out how to create individual screens. I am new to this and so many instructors don’t show the data and how it is coded and brought into The navigation. I had actually given up hope that you could create navigation without a list and here in your first video you have lit the flame that was exhaustedly going out. Thank you so much for being so specific and taking the time to show how everything works together.
Thanks for taking the time to show your appreciation. That means a lot to me. Glad I could be of some assistance.
Even though it’s been said before-I am just going to repeat:
these are the types of videos that should be 1st-party-provided.
Soooo well done, concise and to the point. Thanks a lot!! 😊
Thanks you for those kind words.
Wow - at last an explanation of the NavigationStack that not only makes sense but so cogently presented. Almost every other explanation I read and viewed was relying on telepathy for the transfer of knowledge. Thank you so much and wish Apple had the wit to follow your approach.
Thanks. I appreciate the feedback
Thank you! Your videos are more valuable than WWDC.
Glad you like them!
Thats very true, I have to agree with you here
Stewart, this was excellent. Thank you for your efforts in making these and helping educate. You are very skilled at laying out information and building up the knowledge layer by layer. I shall buy you a ko-fi!
Stewart, your videos are a fantastic resource. I learned the subject material from this video, and I've sent it to others to be their learning guide. Thank you.
Thanks
This 3 part tutorial is fantastic - you've earned a new subscriber. I've also learned the words homogeneous and heterogeneous - love these, great for explaining!
Thank you for starting out with how things used to be done before.
Very, very clear. Thank you Stewart
Thanks😀
Thank YOu
Very lucid. Thanks a lot. I get a lot to learn from your videos.
Great video Stewart. Very clear on how to implement it with great examples.
Thank you for this video. Very well explained. Not rushed, and with excellent examples.
Been waiting for you to explain this in detail. Thanks 🙏
Thank you for the tutorial Stewart, looking forward to the next videos in this series
Loved this tutorial i am amazed and astonished that someone like you exists in this world and is able to give these lessons to such a degree i am your fan and will always support you ❤
Thank you so much🙏
Thank you very much for your work, great videos
Super clear as usual, thanks Stewart!
Thanks Jordi.
Really great tutorial, tank you so much 😊
If you are not an instructor, you should be! Bravo
Thank you Stewart...
Thanks for all the great videos!
You're welcome Michael. Glad you are enjoying them.
Thank you!, I have edited my comments as I figured out how to make this navigation structure work with my coredata objects, not that I can explain it very well as I'm a novice programmer. I was making it more difficult than I had to. In essence the navigationLink "value:" was just the coredata object I was iterating over and navigationDestination "for:" was the class for the object along with self. What helped is Stewart's 2nd part video on this topic. I may be saying all this wrong but it worked and I was able to update my code with this new structure. Thanks again.
Merci. Ce video est une super reference pour la nouvelle navigation avec swift.
Merci, je suis content que ça te plaise.
Bravo pour ton français. I did not realize it at once, being used to see French 😃
We learn some French here in Canada because it is an official language. My wife is fluent, but I mostly can barely understand.
extremely helpful, thank you sir
Most welcome!
Thankyou Mr Lynch, very clear explanations (all of your videos)
I am looking for SplitNavigation view & NavigationStack combination, bit not clear from SwiftUI documentation & how to implement, would care to share snippet of code ?
NavigationSplitView will collapse to a NavigationStack when your device is in compact width. Have you seen my video on NavigationSplitView? ua-cam.com/video/RsmMLLL8FB0/v-deo.html
Excellent Sir, Thankyou
very detailed explananation thank you. But there is one thing stucked my mind . Why does the random button, which normally gives the same appearance, give a different appearance after adding a path? Isn't the navigation stack have the default path anyway?
Can you give me a time stamp on the video that you want me to look at. I created that video a long time ago.
Well I need to navigate to more view from the subview but the problem is every time the navigationDestination mention in root view get called and navigation from subview fails some time any suggestions ? and also I need to pass the data from subviews which is being hurdle for me.
Very clear. Thanks!
Good work, thank you.
Thank you too!
I'm late to the party but many thanks for this. I like the organization of content and the ability to load Views directly. After messing around with it I can jump around TopicViews by adding a navigationLink to a TopicView but that does add Views to the stack without removing them when you navigate back. Combined with what I learned in your Navigation Stack Part 2 tutorial I can add a NavigationPath and remove Views from the stack to navigate back two screens, go directly to the root menu screen, etc. (oops - I meant this to go on Enum Navigation)
Glad it was helpful!
is it possible to overwrite the default behavior of a list within navigation stack to not have chevron and replace it with info button instead? similar to the list found on iPhone Bluetooth page
See if this helps www.jessesquires.com/blog/2023/07/18/navigation-link-accessory-view-swiftui/#:~:text=The%20best%20way%20I've,another%20view%20using%20a%20ZStack%20.&text=This%20allows%20you%20to%20provide,foremost%20Label%20in%20the%20ZStack%20.
Why can't apple provide more code samples and videos like the above, so the rest of us know what the heck is going on??? Well done and THANK YOU!
You will have to ask them ;). Glad you appreciate what I do.
Thanks! I wonder how it works, when having two String values, but I want to have them on different views. For example: stringValue1 = author name, and stringValue2 = birthplace. Since I can only differentiate between String, Int, etc. this probably won't work, would it?
It threw are on different views, you have a different binding to the String. Perhaps I don’t understand your question. Feel free to send me an email with a small sample project that displays the issue and i will take a look.
amazing video
Brilliant!!!!!
Great video Stewart, thank you!
excellent tutorial. 😍
Glad you enjoyed it
Hello Stewart, just one question
How would i continue my navigation from the second screen? For example, going in to the some third screen?
Watch the next video in this series. I cover this.
@@StewartLynch thanks a lot!!! :)
I am building a test project for myself which is an app that can remember what shows I am watching. The app remembers what season I am currently on and what is the last episode that I have watched. I am using SwiftData for persistence. Now with all this in place, my main question is I started with NavigationLink inside NavigationStack to edit information on a show. but passing in data to the next screen using NavigationLink was not reliable. It was freezing the app. But after I restart the app every thing starts working. Then I switched the UI around to use .sheet on the ListView instead of NavigationLink. The app behaved every single time as it suppose to. In your opinion what are good use cases for NavigationLink and Presenting a sheet with .sheet modifier? Sorry for this long question.
Not sure why it would be freezing. Sounds like something else is wrong there. I guess it depends on your app, but for edits, I prefer sheets.
@@StewartLynch Thank you for your quick response. I went back and checked, it is not hanging. It does navigate to the Edit screen but the screen is blank. Not even I see the navigation title. I only see a back button. Then when I kill the app and restart the app and then navigate all works normal.
I would have to see your code to know what is going on.
@@StewartLynch That is kind of you. But I will certainly first try to fix it myself. If I fail I will send over the code. I am learning a lot from your videos.
There is still one aspect of this that is escaping me. I see that if I pass a `path` to `NavigationStack` (either an instance of `NavigationPath` or any `Array`), I can pop to the root screen. In the case of `NavigationPath` I can call `path.removeLast(path.count)`. In the case of an `Array` I can just set it to an empty `Array`. But this only seems to work if my `NavigationLink` instances are created with a `value` argument. If I instead create them with a `destination` argument, I can't find a way to pop to the root screen. Is that possible?
Don’t use the NavigationLink with destination any more Mark. Trigger the navigation based on a change of value and use the .navgationDestination(for:) to get an instance of that value and create the View for the destination there.
@@StewartLynch Yeah, I learned how to do that from your video and I see how that is useful in many scenarios. But sometimes each link goes to a specific view that isn’t based on a value. There can be a one-to-one relationship between links and views and I still would like the ability to pop to root.
You should always be able go link it to some value. Just create an enum with a case for each of your views then switch on the case to go to the destination.
@@StewartLynch That’s encouraging because that’s exactly what I did! I just wasn’t sure that was the best option. I’ll stick with that. Thanks Stewart!
The starter project link is not valid, it has ... in the link 😀😀
I think you will find that the error is on your end. You are likely using Chrome and your security settings are not allowing zip downloads. Please try using Safari and you will find that it works. I just verified that the link works when using Safari.
@@StewartLynch Oh yes, now it works. Just now I was wondering why your other links with ... are working.😅😅
@@codegiz author other links are not zip files.
This is a 🔥
👍🏼👍🏼👍🏼
Is there a way to use this navigationstack to automatically navigate to your next view? It seems like now when you want to navigate, you have to create a physical button or link to press and begin navigating to the next screen. However, you used to be able to use the navigation links isActive parameter and create an empty view ao that when the condition is met, you can automatically navigate without pressing anything Such as after a api call.
Yes, this is possible by using a path and simply updating the path. I do cover this I believe.