NavigationStack - SwiftUI Programmatic Navigation - iOS 16
Vložit
- čas přidán 19. 06. 2024
- Head to squarespace.com/seanallen to save 10% off your first purchase of a website or domain using code SEANALLEN.
I explain how to use the new NavigationStack to navigate between views in SwiftUI. You will learn the fundamentals of NavigationStack and how to navigate programmatically in SwiftUI using values (data) and not views.
iOS Developer Courses
seanallen.teachable.com/
Twitter:
/ seanallen_dev
Hired.com:
hired.com/x/1n01g
Book and learning recommendations that help out the channel if you decide to purchase (Affiliate Links):
Paul Hudson's Hacking With Swift:
gumroad.com/a/762098803
Donny Wals - Combine:
gumroad.com/a/909014131
Mark Moeyken’s SwiftUI Books:
www.bigmountainstudio.com/swiftui-views-book/fzc51
Objc.io Books (Thinking in SwiftUI & Advanced Swift):
gumroad.com/a/656585843
Ray Wenderlich Books:
store.raywenderlich.com/a/208...
#swift #softwaredeveloper #iosdeveloper
Timestamps:
0:00 - What is a NavigationStack
0:23 - Start Project Review
1:09 - NavigationStack Fundamentals
5:09 - Fundamentals Review
5:24 - Navigating w/ Different Types
9:26 - Custom Programmatic Navigation
12:09 - Manipulating NavigationPath Array
13:12 - Custom Navigation w/ Multiple Data Types - Věda a technologie
Finally someone who explains how to pass data to the view instead of just creating a simple item list
Glad you liked it.
I swear
Sean you deserve every bit of success you've achieved. You're a talented communicator, and it's obvious you put an enormous amount of work into each piece of content to maintain a high level of quality and consistency. Keep it up!
I can't remember the last time I had to slow the playback speed of a video to be able to process it 😅 Loved the vid, jam-packed with good stuff
Thanks Sean, I was looking for hours to debug my project. Your video and how you explain stuff helped a lot. Since day one you rock!
Love your content and instruction. I am a Swift n00b and play your vids at 75% playback speed to follow along. Thanks for it all and when I get through your tutorials I'll subscribe to your courses. At 75% playback speed.
Thank you very much for this! You were super easy to follow. Just subscribed. Can't wait to see more you have. Thanks again.
Awesome video, thanks for all the work you put into building the next generation of developers!
Happy to help, Ali 😀
Sean, I really appreciate your work, you can explain complex things in the simplest way ever. Love it...
Thanks for the kind words :)
This is by far the best tutorial on that subject thank you :)
Great tutorial so far!! Glad to see how you managed different types of navigations with different types. Thank you!
Glad you liked it!
Thanks Sean it was clear ❤
Sean, Great video to fellow developers.
That was good, clear and helpful. All the view popping up in navigationDestination were in the same View struct though. How does it work when you have different structs? How do you pass the NavigationPath around?
Keep doing what you doing, man!
I like your teaching style
Amazing as always. Thank you Sean!
Glad you enjoyed it, Daniil
Love your videos man! Easily explained and well made :)) Thanks
Glad you like them, Nicolai!
Very good and fast tutorial.
This was a good tutorial to understanding navigation stack. I never knew about the possibilities of using it with data compared to using navigation links
Yes, it opens up A LOT more possibilities.
This is such a nice tutorial. Thank you Sean.
Glad you liked it, Nilesh.
Thanks, Sean 👍👍
Amazing tutorial, thanks man!
Happy to help, Burak!
You are amazing Sean
😀
Hi Sean, thx for your video, you save my time :) Have you some video to customize NavigationBar ? :)
great tutorial. But what would be best for login and logout functionality if we have auto login option till token expired?
Thanks!
@Sean Allen, great tutorial. Thank you. One question: How to add a custom back button? I would like to get rid of "< Back" in favor of "
Hey Sean great video, I was checking the NavigationStack recently and what I did to have acces to the path in every view is to pass that path via the enviromentObject and put the modifier after the NavigationStack so every view inside the Stack had access to the path and can modified it, for that demo it worked for me
Yes, there are a few different ways you can architect your app so you can have access to this path on different screens. I love the flexibility of this!
Hi Sean, it is very good content.
I have an questions, how to manage click on different sections like 20 or 40 sections then how can we manage childs wirh click
Muy bueno este video. Mil gracias.
Happy to help!
Great video! I was wondering if it's possible to use .navigationDestination to jump to different Views like you can in TabView?
3:06 : You need to enable a click effect so that user can visually see your mouse clicking.
excellent content, but could not find the section collapsible icon , I tried adding
.listStyle(.sidebar) , would be nice to have collapsible chevron icon
very much helpful.
Happy to help, Harendra
Nice tutorial. Just what I needed. For popping to the root view we can just do path.removeAll() or path = [ ], rather than computing the count I think - slightly safer if it works.
can use path = .init() , not path.removeAll() nor path.removeLast()
@@MiaYu If you just wanted to be as compact as possible, that would be path = [ ]
But path.removeAll() makes the clearest code, because you're indicating what you really want to do - you want to empty the Array.
you are awesome
Cool video thank you for you effort. However, is it possible to animate “pop to root” ?
What do you do if you want to navigate to a settings page which doesn’t necessarily take a data object. Also when dealing with environment objects to you need to inject these into the navigation link?
Thanks allot, but when using NavigaationPath how can we add a bunch of views to the path in one go ?
Beautiful explanation .
I am still looking for a way to see if I could still use NavigationLink(isActive) with this new API .
I haven't experimented with that yet.
what should one do if I want to use this for simpler cases, not lists.. Like I have a button, no data, and I just want to open another screen.
What if the next view isn't related to data, but rather an action? For example, a user logging in. Do I have to create a Hashable struct/object anyways?
Just found this video - great stuff, and answered a ton of questions. Thanks! Of course, I'm left with the question - how does this work in a NavigationSplitView? I cannot for the life of me figure out where to put the .navigationDestination in a SplitView or if it's even possible to do so in one. Any tips for that?
Glad you enjoyed it! I haven't worked with this in a SplitView yet, so I can't be of much help here unfortunately.
oh they're cookin now huh
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.
is navigationstack or programatic only for list?
Awesome video and explanation as always, but i more and more ask myself one question: Are this pyramid of doom style of code really the new paradygm? Why people see this better or more beautiful than imperative style of code???
The pyramid of doom in when the code is yet to be refactored. Once you refactor your views into components, the look of SwiftUI code becomes clean.
I have dabbled in this stuff for a while and get so confused. Push/pop? Segue? Programmatically and/or wires up in the storyboards?
I can see how that could be. There are many ways to do things. Apple has been in a transition over the last few years with Swift and SwiftUI - so it can be confusing.
I am learning iOS developing (beginner), Should I learn the navigation view first and focus on that, then see the lates updates and understand it ?
and does this means that I shouldn't use navigationView anymore?
A year behind, but does anyone know why path.append doesn’t do anything for any of the 3 buttons? Maybe the path.append is no longer the correct method to use in SwiftUI?
I have a one question. If you know SwiftUI in decent level. Different views,multi screen designs and animations but that’s it. You don’t know swift backend part and networking. If it’s possible to get ui(front end) junior job?
It's possible... but an iOS job where you ONLY do front end UI work is pretty rare. I've only heard of that at the larger FAANG companies... but it would be pretty tough to get hired at one of those places without knowing the "programming" side of things. Almost all iOS jobs will require more than just UI work.
Somehow my entire section became a navigation link as a whole and now it goes through every platform before going back to the Gaming section
Looking to debug this rn
Bro give me advice. I am a student and I am starting new career in development area So I like tow technology Backend or App development which one is good. I mean which one For deeply learning and high learning Please give me advice . Thanks:) Your videos so good.
Why don't you do simply like path = []? to pop to home?
I was wondering that to
I really hate navigation stack and wish they'd make it easier to dynamically display views like it was in UIKit. Navigation stacks make otherwise really nice iOS apps look like windows software.
The only problem is - it's only available in iOS 16...
Cannot find 'navigationstack' in scope, please help
NavigationStack requires iOS 16. Make sure the minimum target on your project is iOS 16
The fact that NavigationPath needs be type erased, in Swift 5.7, is kind of disappointing to be honest.
Hopefully that can be improved upon in future updates. SwiftUI is a work in progress.
I don't understand this concept at all. It makes no sense to me. I am used to clicking a link or button and calling up a new page. Why isn't it possible to have an action linked to a button or screen object that loads a view controller that displays the defined screen objects for rendering and attach events to the objects to drive functionality.
Maybe because this is SwiftUI and it's different from UiKit ? Get used to it and stop crying
Hi Sean I really find your videos very helpful! I appreciate it! I was wondering in Xcode in the interface builder storyboard I was trying to make a tic-tac-toe game. In an action I wanted when the user presses a button an X appears at a certain font size. I have looked for a long time around the internet and still couldn't find anything. I will be forever grateful if you could help me 😁.
@IBAction func testX(_ sender: UIButton) {
sender.titleLabel?.font = [UIFont withSize(75.0)];
}
I tried this it doesn't work.
great video mate!
Thanks a lot!
Thanks!
Wow, thanks Andrew. I appreciate the generosity!