
link to the source code of this project on GitHub.
Build a complete Swift iOS to-do list app from scratch with UIKit, programmatic layouts, Core Data persistence, and a table view with to-do and done sections.
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.
Learn how to define and access app-wide colors using a Swift extension with static color properties, enabling consistent UI colors throughout any file via color arrays and CG color conversions.
Create and place the app title label on the welcome screen by building a reusable custom label class, then apply fonts and constraints to position it precisely using auto layout.
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.
Add a copyright label to the welcome view, source the logo as needed, style it with a subtle gray color and a 14-point font, and anchor it bottom-centered.
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.
Wires the next button to a handle next action and uses a spring CGAffineTransform to scale the button down and back up, before transitioning to the next view.
Create a new list controller and present it from the welcome controller after the animation to enable programmatic navigation without storyboards.
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.
Explore option sets in Swift to implement versatile button options for a Swift iOS to-do app, including rounded text and square icon styles.
Place the add button with auto layout in code, anchoring to the subtitle label and bottom edge. Set height to 24 and apply right padding, previewing constraints with the debugger.
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.
Build a new item pop-up by subclassing the gradient view, override initializers, and apply auto layout constraints to display a customizable input and action buttons within the to-do list app.
Apply a corner radius to popup view rounded text buttons, configure a CGfloat radius, and fine-tune cancel button constraints and padding to align with the design.
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.
Create a custom UIKit textfield subclass and place two textfields in the list view, apply placeholders, and wire up constraints to fit the table view cell design.
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.
Build a custom table view for the to-do list, apply a gradient background, and wire up constraints as you plan two sections and method implementations.
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.
Create and register a custom table view cell subclass, configure it in the table view, and introduce a Swift struct to model the to-do data across files.
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.
Replace the label with a customizable text field in the GDListCell to enable editing and insets, tune padding, radius, and constraints, and adjust the cell height for the final design.
Anchor and inset the table view to fit background, adjust the corner radius from 12 to 24, then 16, and use a lazy var for layout before adding a checkbox.
Create a custom check box control in Swift using UIKit, subclassing a button and styling borders, and implement a fixed size with constraints to toggle the background green when selected.
Toggle the check box by wiring a boolean toggled to the custom checkbox and change the cell background to green when true, reflecting the to-do status in the list.
Learn to integrate custom icons into a Swift iOS task app by adding assets in multiple sizes, configuring images for check and plus buttons, and aligning with Apple icon guidelines.
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.
Learn to add multiple sections to a UITableView with titles, separating completed and not completed items, and customize the header view and height for clearer grouping.
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.
Filter to-do items by status across sections, using a two-dimensional data structure and index paths to drive the table view, distinguishing false and true items.
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.
Set the status bar color to white and adjust header insets to align with the item list, while tweaking padding and the plus button for a polished look.
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.
Learn to animate a pop-up view off and on the screen using translation transforms and constraints, with emphasis on delegates and protocols in Swift and UIKit.
Learn how to apply rounded corners to specific edges in your swift ios to-do list app by configuring view.layer.cornerRadius and view.layer.maskedCorners, and understanding default corner behavior.
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.
Add a new item to the Swift iOS to-do list app with a unique id, title, and incomplete status, avoid duplicates, refresh the list, and clear the input after adding.
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.
Create a to-do core data entity in the data model, define attributes (id, title, status boolean), and insert and save it into the view context with error handling.
Learn how to fetch a collection of to-do items from Core Data using a fetch request and context, with a persistent container, then display them in the app.
Learn how to refactor a to-do app to use a new Core Data backed to-do model, with a shared data manager, fetching, saving, and toggling status in the list.
Delete a to-do item from Core Data by ID, then immediately recreate it with the same data but with the status swapped and text updated, refreshing the UIKit table view.
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.
Wrap up core data by adding items to the to-do list, casting to double, and saving the data model.
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.