GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ijoshsmith/Wizardry: Reusable way to implement the Wizard UI design in iOS apps

BranchesTags
Open more actions menu

Latest commit

 

History

13 Commits
13 Commits

Folders and files

NameName
Last commit message
Last commit date
Demo
Demo
 
 
Framework
Framework
 
 
Images
Images
 
 
Wizardry.xcworkspace
Wizardry.xcworkspace
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 

Repository files navigation

Wizardry

wizard

A reusable way to allow users to perform a multipart task in your iOS app, written in Swift.

sign up wizard demo

The demo implements a wizard that allows users to sign up to use an app.

Classes in the framework make no assumption about, nor impose restrictions upon, your wizard's visual design.

Important functionality in the wizard framework has thorough unit test coverage.

How to use it

Wizard Step View Controllers

Create a UIViewController subclass for every step/screen in your wizard.

Example: UsernameStepViewController

Wizard Steps

For every step in your wizard, create a type that adopts the WizardStep protocol. An instance of this type owns a wizard step view controller and collects & processes user input for that view controller.

Example: UsernameWizardStep

Note: It is possible to have wizard step view controllers adopt the WizardStep protocol, if preferred.

Data Source

Adopt the WizardDataSource protocol to determine the order in which a user will view your wizard steps.

Example: SignUpWizardDataSource

Wizard View Controller

Subclass WizardViewController and implement your custom UI design to navigate between wizard step views. You will need to override three methods:

func navigateToInitial(wizardStep: WizardStep)    
func navigateToNext(wizardStep: WizardStep, placement: WizardStepPlacement)
func navigateToPrevious(wizardStep: WizardStep, placement: WizardStepPlacement)

Example: SignUpWizardViewController

Show The Wizard

Create your wizard view controller and configure it with your custom data source before presenting it to the user.

@IBAction func handleShowSignUpWizardButton(sender: UIButton) {
    let storyboard = UIStoryboard(name: "SignUpWizard", bundle: nil)
    let signUpWizardVC = storyboard.instantiateInitialViewController() as! SignUpWizardViewController
    let model = SignUpWizardModel()
    let dataSource = SignUpWizardDataSource(model: model)
    
    signUpWizardVC.configureWith(dataSource, completionHandler: { [weak self] (canceled: Bool) in
        print("Completed sign up wizard. canceled = \(canceled)")
        self?.dismissViewControllerAnimated(true, completion: nil)
        })

    presentViewController(signUpWizardVC, animated: true, completion: nil)
}

Example: ViewController

About

Reusable way to implement the Wizard UI design in iOS apps

Resources

Readme
MIT license
Activity

Stars

92 stars

Watchers

3 watching

Forks

14 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.