iOS Dev Interview Prep - Take Home Project - UIKit - Programmatic UI - FULL COURSE
Вставка
- Опубліковано 1 жов 2024
- In this course I walk you through a mock take home project that is very common in the iOS dev job interview process. We start from the project brief, design, and we build the entire thing together so you can practice for the real thing.
This project fetches a list of followers from a GitHub username via a network call and allows the user to set and persist a favorite GitHub user.
- 100% Programmatic UI
- One complete app
- No 3rd party libraries
- Updated for iOS 15, 16 & iOS 17
See the timestamps below for the full curriculum. A structured version of this course (free) can be found at the link below. Includes progress saving, source code, and helpful comment section per video:
seanallen.teac...
Download App Assets:
www.dropbox.co...
GitHub API Documentation:
docs.github.co...
Updated Delete Storyboard Video:
• Intro to Programmatic ...
What's New in Xcode 13:
• What's New in Xcode 13
What's New in Xcode 14:
• What's New in Xcode 14
What's New in Xcode 15:
• Xcode 15 - What's New
X (Twitter):
Sean Allen - / 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/...
Donny Wals - Combine:
gumroad.com/a/...
Mark Moeyken’s SwiftUI Books:
www.bigmountainstudio.com/swiftui-views-book/fzc51
Objc.io Books (Thinking in SwiftUI & Advanced Swift):
gumroad.com/a/...
Timestamps:
0:00 - Updated for iOS 17
1:45 - Course Overview - What You Will Learn
9:37 - Take Home Project Brief
24:20 - Xcode Project Setup - Delete Storyboard
40:03 - App Navigation Setup - TabBar & NavBar
57:55 - Custom UIButton & UITextField
1:18:25 - Search Screen UI
1:40:10 - Pass Data Between Views
2:05:26 - Custom Alert
2:46:36 - Project Organization & Architecture
2:59:04 - Network Call Planning
3:13:46 - Quick NavBar Bug Fix
3:18:49 - Create Network Call - Get Followers
3:50:55 - Refactor Error Message
4:04:24 - Result Type
4:16:00 - UICollectionView - Follower Cell UI
4:32:16 - UICollectionView - Initial Setup
4:39:30 - UICollectionView - Flow Layout
4:50:20 - UICollectionView - Diffable Data Source
5:10:12 - ARC, Memory Leaks, Capture Lists
5:22:15 - Download & Cache Avatar Images
5:44:19 - Pagination - Next 100 Followers
5:59:30 - Loading View
6:15:47 - Empty State
6:35:54 - Search Functionality
6:51:11 - Modal & Passing Data
7:07:24 - Network Call - Get User Info
7:21:43 - User Info UI Planning
7:25:40 - Child ViewController - UserInfoHeaderVC
8:06:31 - UserInfoVC Cleanup
8:20:07 - Item Info View
8:37:03 - ItemInfoVC - Superclass
8:49:01 - ItemInfoVC - Subclass
9:02:10 - Date Conversion & Date Label
9:16:42 - Button Functionality - Delegates & Protocols
9:48:29 - Persistence Setup
9:53:52 - Persistence Manager
10:14:57 - Persistence Manager - Make it Work
10:27:34 - UITableView - FavoriteCell
10:36:05 - UITableView - FavoritesVC
11:00:28 - Optimization - UITabBarController, Screen Sizes & Constants
11:26:07 - Optimization - GFAlertVC, Date Decoding, Network Refactor
11:55:33 - Optimization - Search, Pagination, Empty State
12:22:07 - Optimization - Variadic Parameters, Dynamic Type
12:53:39 - Optimization - Persistence Manager, UITableView Extension
13:02:42 - Optimization - Old iPhone SE - UserInfoVC Fixes
13:17:41 - The Final Pass (Before iOS 15, 16, 17 Updates)
13:50:54 - Interview Next Steps - After Project Turn In
13:57:56 - iOS 15 - Initial Run
14:07:02 - iOS 15 - Button Configurations
14:23:43 - iOS 15 - Async/Await - Part 1
14:55:01 - iOS 15 - Async/Await - Part 2
15:15:00 - iOS 15 - Date Format
15:19:51 - iOS 16 - Initial Run
15:28:49 - iOS 16 - SwiftUI in UIKit Cells
15:41:34 - iOS 17 - Initial Run
15:47:47 - iOS 17 - UIKit Previews
15:51:56 - iOS 17 - UIContentUnavailableView
#swift #softwaredeveloper #iosdeveloper
Learn more with my Swift, SwiftUI and UIKit courses at seanallen.teachable.com
hello sir, is any new uikit tutorial in the future ?
Hey Sean I purchased this course and watched it a year ago and I gotta say this course RLY helped me out get my first job as an iOS dev a year ago. Learned a lot from this course. Thx again
Happy to hear it helped get that first job, Kevin! Glad you enjoyed it.
This is the longest UA-cam video I have ever watched. You help me connect all the knowledge I learned last year.
A cup of coffee for you and wish you all the best.
I appreciate the support and generosity! And happy to hear I have the record for longest video watched :). Glad you enjoyed it.
Day 1: 2:03:24
Day 2: 3:04:50
Day 3: 4:16:52
Day 4: 5:48:27
Day 5: 6:51:08
Day 6: 9:01:12
Day 7: 10:26:58
Day 8: 11:10:47
Day 9: 12:30:53
Day 10: 13:50:58
Day 11: Finished!!
Way to keep the pace! Good work
Hey Sean, I've purchased this course a several years ago - Found it REALLY GOOD and HELPFUL!!! Unbelievably cool that you've decided ti publish it here on UA-cam 🤩
Glad it was helpful for ya :)
how much was this course? i couldn't see it anymore
A great and valuable gift to the iOS community. Thanks a lot 🙏
I wish you a happy new year! 🎄
Happy new year!
after I put the VCs in the nav and then the nav in the tabbar, it does not give me a different color in the up and bottom, how can I solve this problem, or does it have something to do with my XCode version. I am using Monterey. Xcode 14.2
To get the views to fill the entire screen you need to add a LaunchScreen (can be completely blank, just needs to be in the project) and then choose the new LaunchScreen in the project settings under 'App Icons and Launch Screen'. If you don't have the Launch Screen it defaults to a smaller screen size.
The first thing I thought of when I saw this was that you were a little girl and I was like oh my gosh I love you so much and I ❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤😂😂😂😂😂😂😂🎉🎉🎉🎉🎉❤❤❤❤❤❤❤😊
Hello i created tab bar but background colour is setting the full screen unable t osee tab bar and navgation bar is light as your simulation
Hello i created tab bar but background colour is setting the full screen unable t osee tab bar and navgation bar is light as your simulation
Hello Sean! I presume after this course number of your followers dramatically increased, so implementing the pagination is just what the doctor ordered:)
just finished this course,but 4:31:17 is still my favorite part of this video!! such a lol moment
thank you for this video, sir!
There is a side benefit to these courses he is providing for free. When they are outdated a little, it can great learning opportunties. When you come across a point where it's not what he is showing on his end, the user can use that time to dig into the documenation, the internet (github, stackoverflow, google, etc) and research on your own to try and figure out the problem. Which is what s/w devs do. Solving problems, one at a time.
Very good point! The main reason I made them free is they were becoming a bit dated and it's time to create some new ones. But like you say, this is a good opportunity to learn on your own instead of having your hand held every step of the way. That's a good thing!
This is what is happening to me. I am very grateful for it. However, the added challenge is using Objective-C and UIKit. I am just over 3 hours in, where I think I could have been 4 or 6 hours in if I didn't use Objective-C and the content was updated.
Multiple instances (scenes) of same app feels like some multiverse sh&t
What theme of typing code is that? I really like it. Did you customize it yourself or is it already available somewhere on the internet? By the way, this course is awesome. It helps me so much, and your way of explaining is perfect. I wish that one day in college we will have professors like you.
Thank you. :)
Happy to hear you liked the course! The Xcode theme I use is called Midnight. You can change this in Xcode settings. The only customization I did was to make my comments grey instead of bright green (it was too overpowering).
Sean your video has a bug, there is no translation into Brazilian Portuguese!!!!
Pretty awesome of you to make this free now! I would love to see (and buy) a SwiftUI version of the same course.
I’ve contemplated this… I might do that later in the year, but I have ideas for other courses too.
Hey Sean. i got to 9 hours now and i am a bit confused when are you supposed to use UIVIewController and when UIView.
i mean specificaly GFUserInfoHeaderVC is a viewcontroller. why? Couldnt we just make it a UIView and just created the design the same way like GFItemInfoView or GFAvatarImageView?
thanks. i am just confused about it
I'm happy to b e your virtual student 😌😎😎😎
😊
I'm experienced developer and starting from zero always my favorite part, but finding best practices and help at this level is so much helpful.
Thank you
Glad my style was helpful for ya!
Thomas Jessica Rodriguez Jason Hernandez Paul
Dude this is beyond awesome, you are amazing. This is exactly what I needed!!!!
Glad I could help!
Hey Sean, thanks man.. I really enjoy learning with you. Now I have a problem. Whenever I build the app and run it this message appear in the debug window ( Gesture: System gesture gate timed out.). what could be wrong?.. Xcode 15.3, Swift 5.10..thanks again. Greetings from Egypt
Thompson Steven Martin George Wilson Jennifer
Really enjoy the thoroughness of your content. Any chance you could cover WatchOS platform?
Thanks! I've actually never built a watchOS app, so I'm probably not the best person to teach that.
Im marking my progress here, now im at 4:05:00
This course is super amazing for me, Thank u so much forever bro💐💐💐
Glad you enjoyed it!
I started my career as a Flutter developer, and it was challenging for me to get used to iOS programmatic UI.
However, your iOS programmatic UI courses really helped me a lot.
Thanks for offering this amazing course for free again
Glad it was helpful!
Why you are switching to native iOS development as I am starting to learn new technology so I want to know from real developers
Thankyou Sean for this Course. Its really helpful😊.
Glad it was helpful!
A big favor, can you activate the Spanish subtitles on your channel because it doesn't show me in Spanish?
Miller Anthony Hall James Taylor Cynthia
Funny note - I actually got a successful json response when typing in arbitrary letters to test the custom error message. lol
Hi Sean, does this have any update or delete action on apis? I guess all apis are just read operations.
We use the GitHub API to fetch data. Because it's GitHub's data, we cannot update or delete anything. This is meant to cover the basics of network calls to prepare a Jr. developer for their first iOS dev job.
geez, wish I had these before enrolled into Apple Developer Academy
Glad you enjoyed it!
thank u so much for this course
Happy to help!
Is there any source code? I didn't find it
you can find it at seanallen.teachable.com
very cool, we don't have such content in Russia
Glad you like it :)
Hi Sean, thank you for this great course but I purchased this course yesterday, will I get a refund?
I refunded you yesterday, Orcun :). Check your email/account and let me know if you received it.
@@seanallen I have received the refund.
Great work, Sean! Your content is awesome.
Wow, thank you! I appreciate the generosity!
Hi Sean, the course is amazing, thank you so much for your hard work, I totally watched it. But I still have bugs with loading images. When reusing cells, I tried to assign image nil and close the task, but the bug still remained both in the collections and in the table. Of course there is kingfisher, but I don’t want to use it
Thank you for making this free Sean, it helped me learn a lot! You're an awesome teacher 😁
Glad it was helpful!
And where is the link to download course files? Could not find it in the description...
Just added a download link to the description. I forgot it. My apologies :)
@@seanallen thanks a loooot Sean!!! As always pleasure following your video courses!
I finally got back into iOS development and currently trying to continue following an old course for beginners but wanting to do more advance concepts used in industry specially with programmatic UI using UIKit! I am a long time fan of this channel so thank you so much for this awesome Christmas Gift! It means a lot for someone like me!
Happy to help! Hope you enjoy it.
Thanks for the new year gift sean sir 😃!!!
Happy new year!
What database do you use for IOS apps if you wanted to have multiple users? Can you use the API from your web application?
Firebase is wonderful for this! It allows for user authentication, etc!
What architecture pattern does this use? MVC or MVVM?
I appreciate the generosity :). This uses MVC
A cup of coffee for you. The course and your effort are priceless. Thanks for sharing it.
I appreciate that very much! Glad you got value from the content :)
At first glance I saw “try”. My first thought: do we need a do-catch block for this??
Thank you Sir, I have a little bit problem with TextField: when I touch the field show this error in the log: AddInstanceForFactory: No factory registered for id F8BB1C28-BAE8-11D6-9C31-00039315CD46
please help if you can.
thanks again
Thanks for everything Sean!.
I appreciate that!
Hi Sean, I cannot take your free story on how to become an IOS developer in your page, can you check it?
I just checked and things look normal on my end. I also just had someone get it a couple hours ago, so things appear to be working.
Hello Sean I was wondering if you ever planning to make mac apps course?!
That's not in the plans for the near future. I have a ton of course ideas... but not enough time to build them all.
for myself:
5:10:25
6:00:02
Glad I started w/ SuiftUI 🙂
1:40:00
2:05:28 custom alert
2:20:00
Really appreciate this content!! ❤❤❤❤❤
Glad you enjoy it!
Can I follow along with SwiftUI + MVVM? Will the same logic work ?
That's a good practice exercise. You can use the same concepts and the same logic will work. Just need to make the view communicate with the view model the SwiftUI way. But this will be good practice for you.
do you drink coffee?
Thanks a ton for this man! Been waiting for a Christmas discount 😅
Big enough discount for ya? :)
Oh yea! You the man!
thank u so much for this course king
My pleasure!
thanks
Hope you enjoy!
Thanks for the course, @Sean.
Bookmark - 39:42
Emard Village
I have issue in collection-view-Cell .. then i download yours but the problem is same ... the image show its origanl szie how to show in equal size..
Tank you so much for this awesome Course ..
I believe this is the issue I pointed out that was fixed in iOS 15. We pin the objects in the cell to the contentView of the cell. The fix is to to pin it to the cell itself. So instead of contentView.topAnchor it's just .topAnchor.
thanks... its work@@seanallen
Experienced developers should refuse to take a coding test when applying for a job.
For an experienced developer, I don't disagree. However, this course is targeted at those trying to get their FIRST iOS dev job as a Jr. developer. Take home projects are VERY common in that case.
What do u think about flutter compare to native app? Native app still cool, right? still cool and strong than flutter?
I'm a native iOS developer, so I'm biased, but yes, I believe native is better. However, native may not be the best decision for your business as it depends on the type of app you are building and what resources you have (money, developers, etc...)
yes, i think native app still strong too. until now i didn't see a big app develop with flutter in my country, like : food delivery, Mobile app banking, etc. but a small app or fast production for start-up, freelance project they prefer flutter because of less cost, fast development timeframe and native still strong for long term project from small to big one. it's all of my opinions. Thanks@@seanallen
Hey sean thanks for the course but can you see once like i am not able to see any source code can you update it so that it would be helpful for so many guys from youtube.
The source code can be found if you take the course on seanallen.teachable.com. It's also more structured over there with source code for each video and a very helpful comment section on each video. It's free over there too.
Thanks for the update sean and the course was really helpful.@@seanallen
is it the course that i have purchase? :D
Material excelente. Parabéns 😍🚀
Thanks!
I purchased this course last month and now it's free. That is totally annoying!
Email me and we’ll work something out. Unfortunately, there’s never a good time to make it free because there will always be someone who purchased it recently.
@@seanallenThanks for your reply. Email sent!
No problem, Phil! I got the email and will be processing these requests soon. I've got a few others rolling in, but it will be addressed within a couple hours.
Thanks Sean for the great gesture of helping the whole iOS community , Made my day 🤎
Happy to help!
3:00 common ios dev task
Thanks!
Glad you're enjoying it. I appreciate the generosity :). Thank you.
The best! 🔥
I appreciate that!
Thank you sir 🫡
No problem. Enjoy!
Thank you bro!
No problem!
Thanks...
Happy to help.
Thanks!
Thank you! I appreciate the support :)
Thanks!
Hope you enjoy!
Thanks again!
I appreciate the generosity! Thanks :)
Do you have the same with SwiftUI
I have similar courses in SwiftUI at seanallen.teachable.com
5:10:26
why UIKit?!!!
The course was originally created in early 2020 when SwiftUI was brand new. It’s been updated over the past couple years. I also have SwiftUI courses.
10:00
17:30
24:00
34:00
36:00
40:00
Dont use vars inside a struct, as well as Codable to fetch the data. Decodable is just enough and will not mislead
17457 Domenica Loaf