
link to the source code of this project on GitHub.
Set up an iOS project in Xcode without storyboards, configure the app delegate window, and set a welcome controller as the root view controller for the simulator.
Learn to lay out views programmatically in a Swift iOS to-do list app using auto layout constraints, applying left and top anchors, colors, and corner radii while configuring translatesAutoresizingMaskIntoConstraints.
Create a custom gradient view by overriding layerClass to return a CAGradientLayer, set gradient colors and locations, and anchor it to the safe area with programmatic constraints.
Extend UIColor with a convenience initializer for RGB integers and hex codes, use it to style a gradient, and streamline colors in a Swift iOS UIKit to-do app.
Learn to implement a hex color initializer and color extensions in a Swift iOS to-do list app, using hex codes for consistent colors across your UIKit project.
Create and apply a custom UILabel subclass in Swift, implementing a required initializer, default text, text color, font, and center alignment while handling frame and Auto Layout scenarios.
Learn to add a custom font to an Xcode 9 Swift 4 project by creating a fonts folder, importing Railway from Google Fonts, and applying it to a label.
Add a center-aligned welcome label on the screen in the to-do list app, configure its text and two-line limit, and apply constraints for a clean, reusable setup.
Learn to build a custom UIButton subclass in Swift using UIKit, with a reusable initializer, title and color settings, gradient styling, and Auto Layout constraints on a welcome screen.
Learn to build a custom header UIView for a Swift iOS to do list app, adding a background and two labels (title and subtitle) with a control.
Place a custom header view in the list controller using a gradient, set up auto layout constraints, and fix its height to render at the top of the to-do list.
Position header GDLabels in the GDHeaderView for a Swift iOS to do list app by configuring title and subtitle labels, setting fonts, and applying constraints or stack views.
Learn to use Swift option sets to scale your iOS to-do list app, centralizing button configuration and phase two styling for a maintainable, extensible front-end.
Learn how to design and implement a custom protocol and delegate for a gdheaderview, enabling a button to add items and safely handle optional delegates.
Place the add button on the screen, anchor it with constraints, and wire its action using a selector and target. Expose the function to Objective-C and test the button behavior.
Style our custom UITextField with a background color and adjustable corner radius, adjust height and constraints in the new item popup, and explore text field insets.
Add a custom text field by introducing an inset parameter and overriding placeholderRect(forBounds:), textRect(forBounds:), and editingRect(forBounds:) to apply UIEdgeInsets, ensuring proper placeholder and text alignment.
Learn to use NSNotificationCenter to detect when the keyboard appears and retrieve its height. Set up an observer and extract the keyboard frame from userInfo.
Animate a pop-up view using CGAffineTransform translation by the keyboard height and a spring animation with damping and timing options in a Swift iOS app.
Implement the UITextFieldDelegate to connect the popup's text field, adopt textFieldDidBeginEditing, animate the popup as editing starts, and expose the text field through a delegate for future protocol-based controls.
Implement a custom protocol delegate for the NewItemPopupView to add items to the list and wire the popup open action through the delegate.
Pass text from a text field through a protocol method to the list controller in a Swift iOS UIKit to-do app, handling optionals and updating the list.
Implement cancel functionality for a text field and resign first responder to hide the keyboard, while adding view extension in UIKit for transform-based animations and tuning duration and spring damping.
Learn to use auto layout to position a table view under the header in a list controller, anchoring to the superview and adjusting safe area constraints.
Adopt the table view delegate and data source to manage cells and selections. Register and dequeue reusable cells and configure their text labels for a simple three-row table.
Populate a UITableView with unique data by using a data array, mapping index paths to items, and preparing for custom table view cells in a UIKit iOS app.
Define a to-do data structure with id, title, and status to back a custom table. Implement an mvc pattern, populate with sample items, and resolve type mismatches when wiring cells.
Populate table view cells with to-do data by passing a to-do object (id, title, status) to each cell. Show the title and apply status-driven visuals for completed items.
Learn to create a gap between table view cells by shrinking the internal label and adding top and bottom padding inside a custom cell, since no gap method exists.
Learn to implement a toggle status action for to-do items in a UIKit-based iOS app, including updating the item state, animating color, wiring targets, and refreshing table sections.
Filter duplicates and separate completed and todo items by counting statuses with a for-each loop in Swift, then map the list to populate sections for done and to-do.
Learn to implement a protocol-based delegate for a to-do list cell to toggle item status, pass boolean values, and update the table view with filtered data.
Learn to implement a toggle for to-dos by updating list data with id-based status changes, using map to replace items, and reloading the table.
Refactor a to-do list app by introducing a new protocol to handle text updates and toggle status through a delegate, streamlining data flow and UI refresh.
Update the header to display how many to-do items remain, using an items left variable initialized to zero and refreshed on startup and after data reload.
Add cancel button functionality to close the new item pop-up by calling the same method, and enable a tap gesture recognizer to open it using the animate pop up method.
Learn to animate layout constraints for a Swift iOS to-do list, adjusting the bottom constraint with keyboard height and using duration-based animations to improve user experience.
Fixes bugs by implementing the textfield should return delegate to dismiss the keyboard on return. Improves edit and add flows with animations and prepares for core data persistence.
Explore setting up Core Data in a Swift iOS to-do app using a singleton chordata manager, configuring a persistent container, and accessing the view context to persist entities.
Fix core data bugs in a Swift iOS to-do app by saving edits on return, not on termination, using did end editing and Core Data fetch and update flows.
Learn how to use NSUserDefaults to track whether the app has been opened before, setting a visited flag on first launch and showing the welcome screen accordingly.
Learn Swift, Xcode, and the iOS SDK from a unique perspective by developing a more involved todolist app for the Apple App Store. As a developer it is extremely important you learn specific concepts and technologies that are in demand. In my opinion it is equally important to learn from multiple perspectives and not from just one or two specific instructors. That being said, I think my course offers a very unique perspective on development and this course will teach you the following concepts from my perspective as a professional developer: CAGradientLayer, CoreData, UITableViews, Object Oriented Programming Subclassing, UIKit, self defined Protocols, OptionSet(s) and at least a few more concepts that are contained within the bigger ones. For example, in this course you will learn how to build a custom UITableViewCell and that would fall under learning about UITableViews which is why I didn't initially mention it in this description.