├── CODEOWNERS
├── step2.2-codeAndSegueReview
├── Dice
│ ├── d1.png
│ ├── d2.png
│ ├── d3.png
│ ├── d4.png
│ ├── d5.png
│ ├── d6.png
│ ├── Images.xcassets
│ │ ├── d1.imageset
│ │ │ ├── d1.pdf
│ │ │ └── Contents.json
│ │ ├── d2.imageset
│ │ │ ├── d2.pdf
│ │ │ └── Contents.json
│ │ ├── d3.imageset
│ │ │ ├── d3.pdf
│ │ │ └── Contents.json
│ │ ├── d4.imageset
│ │ │ ├── d4.pdf
│ │ │ └── Contents.json
│ │ ├── d5.imageset
│ │ │ ├── d5.pdf
│ │ │ └── Contents.json
│ │ ├── d6.imageset
│ │ │ ├── d6.pdf
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── icon120.png
│ │ │ ├── icon180.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── RollViewController.swift
│ ├── Info.plist
│ ├── DiceViewController.swift
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── Dice.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step2.3-stepsForSegueOnly
├── Dice
│ ├── d1.png
│ ├── d2.png
│ ├── d3.png
│ ├── d4.png
│ ├── d5.png
│ ├── d6.png
│ ├── Images.xcassets
│ │ ├── d1.imageset
│ │ │ ├── d1.pdf
│ │ │ └── Contents.json
│ │ ├── d2.imageset
│ │ │ ├── d2.pdf
│ │ │ └── Contents.json
│ │ ├── d3.imageset
│ │ │ ├── d3.pdf
│ │ │ └── Contents.json
│ │ ├── d4.imageset
│ │ │ ├── d4.pdf
│ │ │ └── Contents.json
│ │ ├── d5.imageset
│ │ │ ├── d5.pdf
│ │ │ └── Contents.json
│ │ ├── d6.imageset
│ │ │ ├── d6.pdf
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── icon120.png
│ │ │ ├── icon180.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── RollViewController.swift
│ ├── Info.plist
│ ├── DiceViewController.swift
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── Dice.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step2.5-roshambo-imageAssets
├── paper.png
├── rock.png
├── itsATie.png
├── scissors.png
├── PaperCoversRock.jpg
├── ScissorsCutPaper.jpg
└── RockCrushesScissors.jpeg
├── step2.4-prepareForSegueReview
├── Dice
│ ├── d1.png
│ ├── d2.png
│ ├── d3.png
│ ├── d4.png
│ ├── d5.png
│ ├── d6.png
│ ├── Images.xcassets
│ │ ├── d1.imageset
│ │ │ ├── d1.pdf
│ │ │ └── Contents.json
│ │ ├── d2.imageset
│ │ │ ├── d2.pdf
│ │ │ └── Contents.json
│ │ ├── d3.imageset
│ │ │ ├── d3.pdf
│ │ │ └── Contents.json
│ │ ├── d4.imageset
│ │ │ ├── d4.pdf
│ │ │ └── Contents.json
│ │ ├── d5.imageset
│ │ │ ├── d5.pdf
│ │ │ └── Contents.json
│ │ ├── d6.imageset
│ │ │ ├── d6.pdf
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── icon120.png
│ │ │ ├── icon180.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── RollViewController.swift
│ ├── Info.plist
│ ├── DiceViewController.swift
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── Dice.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step2.1-dice-incomplete
├── Dice Incomplete
│ ├── Base.lproj
│ │ ├── d1.png
│ │ ├── d2.png
│ │ ├── d3.png
│ │ ├── d4.png
│ │ ├── d5.png
│ │ ├── d6.png
│ │ └── LaunchScreen.xib
│ ├── Images.xcassets
│ │ ├── d1.imageset
│ │ │ ├── d1.png
│ │ │ └── Contents.json
│ │ ├── d2.imageset
│ │ │ ├── d2.png
│ │ │ └── Contents.json
│ │ ├── d3.imageset
│ │ │ ├── d3.png
│ │ │ └── Contents.json
│ │ ├── d4.imageset
│ │ │ ├── d4.png
│ │ │ └── Contents.json
│ │ ├── d5.imageset
│ │ │ ├── d5.png
│ │ │ └── Contents.json
│ │ ├── d6.imageset
│ │ │ ├── d6.png
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── icon120 copy.png
│ │ │ ├── icon180 copy.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── RollViewController.swift
│ ├── Info.plist
│ └── DiceViewController.swift
└── Dice Incomplete.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step1.2-colorError1
├── ColorMaker
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── Info.plist
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── ColorMaker.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step1.3-colorError2
├── ColorMaker
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── Info.plist
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── ColorMaker.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step1.4-colorError3
├── ColorMaker
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── Info.plist
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── ColorMaker.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step2.6-roshambo-exampleSolution
├── Roshambo
│ ├── Images.xcassets
│ │ ├── tie.imageset
│ │ │ ├── tie.png
│ │ │ └── Contents.json
│ │ ├── rock.imageset
│ │ │ ├── rock.png
│ │ │ └── Contents.json
│ │ ├── paper.imageset
│ │ │ ├── paper.png
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ ├── scissors.imageset
│ │ │ ├── scissors.png
│ │ │ └── Contents.json
│ │ ├── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ │ ├── paper-rock.imageset
│ │ │ ├── PaperCoversRock.jpg
│ │ │ └── Contents.json
│ │ ├── scissors-paper.imageset
│ │ │ ├── ScissorsCutPaper.jpg
│ │ │ └── Contents.json
│ │ └── rock-scissors.imageset
│ │ │ ├── RockCrushesScissors.jpeg
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ChoiceViewController.swift
│ ├── Info.plist
│ ├── Base.lproj
│ │ └── LaunchScreen.xib
│ └── ResultsViewController.swift
└── Roshambo.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step3.1-textFieldsApp
├── TextFields
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-60@2x-1.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ └── Icon-Small@3x.png
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Info.plist
│ ├── Base.lproj
│ │ └── LaunchScreen.xib
│ └── ViewController.swift
└── TextFields.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step1.1-colorMaker-incomplete
├── ColorMaker
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ └── Icon-Small@3x.png
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── Info.plist
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── ColorMaker.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ ├── IDEWorkspaceChecks.plist
│ └── ColorMaker.xcscmblueprint
├── step2.7-roshambo-separateModel
├── RockPaperScissors
│ ├── Images.xcassets
│ │ ├── rock.imageset
│ │ │ ├── rock.png
│ │ │ └── Contents.json
│ │ ├── paper.imageset
│ │ │ ├── paper.png
│ │ │ └── Contents.json
│ │ ├── itsATie.imageset
│ │ │ ├── itsATie.png
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ ├── scissors.imageset
│ │ │ ├── scissors.png
│ │ │ └── Contents.json
│ │ ├── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ │ ├── PaperCoversRock.imageset
│ │ │ ├── PaperCoversRock.jpg
│ │ │ └── Contents.json
│ │ ├── ScissorsCutPaper.imageset
│ │ │ ├── ScissorsCutPaper.jpg
│ │ │ └── Contents.json
│ │ ├── RockCrushesScissors.imageset
│ │ │ ├── RockCrushesScissors.jpeg
│ │ │ └── Contents.json
│ │ └── rock-paper-scissors1.imageset
│ │ │ ├── rock-paper-scissors1.jpg
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── RPSMatch.swift
│ ├── Info.plist
│ ├── RPS.swift
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── RockPaperScissors.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── step1.5-colorMaker-sliders-solution
├── ColorMaker
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ViewController.swift
│ ├── Info.plist
│ └── Base.lproj
│ │ └── LaunchScreen.xib
└── ColorMaker.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ ├── IDEWorkspaceChecks.plist
│ └── ColorMaker.xcscmblueprint
├── step3.2-textFieldsChallengeApp-solution
├── TextFieldChallengeApps
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ └── Contents.json
│ │ └── LaunchLogo.imageset
│ │ │ ├── LaunchLogo.pdf
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── ZipCodeTextFieldDelegate.swift
│ ├── RandomColorTextFieldDelegate.swift
│ ├── Info.plist
│ ├── ViewController.swift
│ ├── Base.lproj
│ │ └── LaunchScreen.xib
│ └── CashTextFieldDelegate.swift
└── TextFieldChallengeApps.xcodeproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── .gitignore
├── README.md
├── LICENSE
└── .github
└── workflows
└── manual.yml
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @udacity/active-public-content
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d1.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d2.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d3.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d4.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d5.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/d6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/d6.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d1.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d2.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d3.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d4.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d5.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/d6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/d6.png
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/paper.png
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/rock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/rock.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d1.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d2.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d3.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d4.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d5.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/d6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/d6.png
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/itsATie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/itsATie.png
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/scissors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/scissors.png
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/PaperCoversRock.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/PaperCoversRock.jpg
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/ScissorsCutPaper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/ScissorsCutPaper.jpg
--------------------------------------------------------------------------------
/step2.5-roshambo-imageAssets/RockCrushesScissors.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.5-roshambo-imageAssets/RockCrushesScissors.jpeg
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d1.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d2.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d3.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d4.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d5.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/d6.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d1.imageset/d1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d1.imageset/d1.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d2.imageset/d2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d2.imageset/d2.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d3.imageset/d3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d3.imageset/d3.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d4.imageset/d4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d4.imageset/d4.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d5.imageset/d5.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d5.imageset/d5.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d6.imageset/d6.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/d6.imageset/d6.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d1.imageset/d1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d1.imageset/d1.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d2.imageset/d2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d2.imageset/d2.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d3.imageset/d3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d3.imageset/d3.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d4.imageset/d4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d4.imageset/d4.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d5.imageset/d5.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d5.imageset/d5.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d6.imageset/d6.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d6.imageset/d6.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d1.imageset/d1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d1.imageset/d1.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d2.imageset/d2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d2.imageset/d2.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d3.imageset/d3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d3.imageset/d3.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d4.imageset/d4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d4.imageset/d4.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d5.imageset/d5.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d5.imageset/d5.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d6.imageset/d6.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/d6.imageset/d6.pdf
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d1.imageset/d1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d1.imageset/d1.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d2.imageset/d2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d2.imageset/d2.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d3.imageset/d3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d3.imageset/d3.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d4.imageset/d4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d4.imageset/d4.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d5.imageset/d5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d5.imageset/d5.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d6.imageset/d6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d6.imageset/d6.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon120.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon180.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/AppIcon.appiconset/icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/AppIcon.appiconset/icon120.png
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/AppIcon.appiconset/icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/AppIcon.appiconset/icon180.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/tie.imageset/tie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/tie.imageset/tie.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.3-stepsForSegueOnly/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon120.png
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/AppIcon.appiconset/icon180.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock.imageset/rock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock.imageset/rock.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.2-codeAndSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper.imageset/paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper.imageset/paper.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.4-prepareForSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-60@2x-1.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.1-textFieldsApp/TextFields/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors.imageset/scissors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors.imageset/scissors.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock.imageset/rock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock.imageset/rock.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/AppIcon.appiconset/icon120 copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/AppIcon.appiconset/icon120 copy.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/AppIcon.appiconset/icon180 copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/AppIcon.appiconset/icon180 copy.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/paper.imageset/paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/paper.imageset/paper.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/itsATie.imageset/itsATie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/itsATie.imageset/itsATie.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/scissors.imageset/scissors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/scissors.imageset/scissors.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper-rock.imageset/PaperCoversRock.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper-rock.imageset/PaperCoversRock.jpg
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors-paper.imageset/ScissorsCutPaper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors-paper.imageset/ScissorsCutPaper.jpg
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock-scissors.imageset/RockCrushesScissors.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock-scissors.imageset/RockCrushesScissors.jpeg
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/PaperCoversRock.imageset/PaperCoversRock.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/PaperCoversRock.imageset/PaperCoversRock.jpg
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/ScissorsCutPaper.imageset/ScissorsCutPaper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/ScissorsCutPaper.imageset/ScissorsCutPaper.jpg
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d1.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d2.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d3.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d4.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d5.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/d6.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d6.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d1.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d2.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d3.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d4.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d5.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/d6.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d6.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d1.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d2.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d3.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d4.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d5.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/d6.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "d6.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/LaunchLogo.imageset/LaunchLogo.pdf
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/RockCrushesScissors.imageset/RockCrushesScissors.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/RockCrushesScissors.imageset/RockCrushesScissors.jpeg
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock-paper-scissors1.imageset/rock-paper-scissors1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/udacity/ios-nd-uikit/HEAD/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock-paper-scissors1.imageset/rock-paper-scissors1.jpg
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/LaunchLogo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchLogo.pdf"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d1.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d2.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d2.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d3.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d3.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d4.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d4.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d5.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d5.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/d6.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "d6.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "rock.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/tie.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "tie.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "paper.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "scissors.png"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/paper.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "paper.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "rock.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/itsATie.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "itsATie.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/scissors.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "scissors.png"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/paper-rock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "PaperCoversRock.jpg"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/rock-scissors.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "RockCrushesScissors.jpeg"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/scissors-paper.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x",
10 | "filename" : "ScissorsCutPaper.jpg"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/PaperCoversRock.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "PaperCoversRock.jpg"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/ScissorsCutPaper.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "ScissorsCutPaper.jpg"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/RockCrushesScissors.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "RockCrushesScissors.jpeg"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/rock-paper-scissors1.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x",
6 | "filename" : "rock-paper-scissors1.jpg"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | # Pods/
27 |
28 | .DS_Store
29 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Roshambo
4 | //
5 |
6 | import UIKit
7 |
8 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
9 |
10 | @UIApplicationMain
11 | class AppDelegate: UIResponder, UIApplicationDelegate {
12 |
13 | // MARK: Properties
14 |
15 | var window: UIWindow?
16 |
17 | // MARK: UIApplicationDelegate
18 |
19 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
20 | // Override point for customization after application launch.
21 | return true
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # UIKit Fundamentals
4 |
5 | 
6 |
7 | This repository contains resources for Udacity's UIKit Fundamentals course.
8 |
9 | ## Overview
10 |
11 | UIKit Fundamentals is designed as a first touchpoint to Apple's expansive UIKit framework. It includes many focused examples that demonstrate specific views, view controllers, and Apple-related paradigms.
12 |
13 | ## Setup
14 |
15 | Generally speaking, most projects can run without any additional setup. However, consult the UIKit Fundamentals course for more information.
16 |
17 | ## Maintainers
18 |
19 | @OwenLaRosa
20 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // TextFields
4 | //
5 | // Created by Jason on 11/11/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // TextFieldChallengeApps
4 | //
5 | // Created by Jason on 11/12/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Dice Incomplete
4 | //
5 | // Created by Gabrielle Miller-Messner on 12/16/14.
6 | // Copyright (c) 2014 Gabrielle Miller-Messner. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // RockPaperScissors
4 | //
5 | // Created by Gabrielle Miller-Messner on 10/29/14.
6 | // Copyright (c) 2014 Gabrielle Miller-Messner. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - AppDelegate: UIResponder, UIApplicationDelegate
12 |
13 | @UIApplicationMain
14 | class AppDelegate: UIResponder, UIApplicationDelegate {
15 |
16 | // MARK: Properties
17 |
18 | var window: UIWindow?
19 |
20 | // MARK: UIApplicationDelegate
21 |
22 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
23 | // Override point for customization after application launch.
24 | return true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/RollViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RollViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - RollViewController: UIViewController
12 |
13 | class RollViewController: UIViewController {
14 |
15 | // MARK: Generate Dice Value
16 |
17 | // randomly generates a Int from 1 to 6
18 | func randomDiceValue() -> Int {
19 | // Generate a random Int32 using arc4Random
20 | let randomValue = 1 + arc4random() % 6
21 |
22 | // Return a more convenient Int, initialized with the random value
23 | return Int(randomValue)
24 | }
25 |
26 | // MARK: Actions
27 |
28 | @IBAction func rollTheDice(){
29 |
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "size" : "60x60",
25 | "idiom" : "iphone",
26 | "filename" : "icon120.png",
27 | "scale" : "2x"
28 | },
29 | {
30 | "size" : "60x60",
31 | "idiom" : "iphone",
32 | "filename" : "icon180.png",
33 | "scale" : "3x"
34 | }
35 | ],
36 | "info" : {
37 | "version" : 1,
38 | "author" : "xcode"
39 | }
40 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "size" : "60x60",
25 | "idiom" : "iphone",
26 | "filename" : "icon120.png",
27 | "scale" : "2x"
28 | },
29 | {
30 | "size" : "60x60",
31 | "idiom" : "iphone",
32 | "filename" : "icon180.png",
33 | "scale" : "3x"
34 | }
35 | ],
36 | "info" : {
37 | "version" : 1,
38 | "author" : "xcode"
39 | }
40 | }
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "size" : "60x60",
25 | "idiom" : "iphone",
26 | "filename" : "icon120.png",
27 | "scale" : "2x"
28 | },
29 | {
30 | "size" : "60x60",
31 | "idiom" : "iphone",
32 | "filename" : "icon180.png",
33 | "scale" : "3x"
34 | }
35 | ],
36 | "info" : {
37 | "version" : 1,
38 | "author" : "xcode"
39 | }
40 | }
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/RollViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RollViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - RollViewController: UIViewController
12 |
13 | class RollViewController: UIViewController {
14 |
15 | // MARK: Generate Dice Value
16 |
17 | // randomly generates a Int from 1 to 6
18 | func randomDiceValue() -> Int {
19 | // Generate a random Int32 using arc4Random
20 | let randomValue = 1 + arc4random() % 6
21 |
22 | // Return a more convenient Int, initialized with the random value
23 | return Int(randomValue)
24 | }
25 |
26 | // MARK: Actions
27 |
28 | @IBAction func rollTheDice(){
29 | performSegue(withIdentifier: "rollDice", sender: self)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "size" : "60x60",
25 | "idiom" : "iphone",
26 | "filename" : "icon120 copy.png",
27 | "scale" : "2x"
28 | },
29 | {
30 | "size" : "60x60",
31 | "idiom" : "iphone",
32 | "filename" : "icon180 copy.png",
33 | "scale" : "3x"
34 | }
35 | ],
36 | "info" : {
37 | "version" : 1,
38 | "author" : "xcode"
39 | }
40 | }
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/ZipCodeTextFieldDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ZipCodeTextFieldDelegate.swift
3 | // TextFieldChallengeApps
4 | //
5 | // Created by Jason on 11/12/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | // MARK: - ZipCodeTextFieldDelegate: NSObject, UITextFieldDelegate
13 |
14 | class ZipCodeTextFieldDelegate: NSObject, UITextFieldDelegate {
15 |
16 | func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
17 |
18 | var newText = textField.text! as NSString
19 | newText = newText.replacingCharacters(in: range, with: string) as NSString
20 |
21 | return newText.length <= 5
22 | }
23 |
24 | func textFieldShouldReturn(_ textField: UITextField) -> Bool {
25 | textField.resignFirstResponder()
26 |
27 | return true;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/RPSMatch.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SingleMatch.swift
3 | // RockPaperScissors
4 | //
5 | // Created by Jason on 11/14/14.
6 | // Copyright (c) 2014 Gabrielle Miller-Messner. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // MARK: - RPSMatch
12 |
13 | // The RPSMatch struct stores the results of a match.
14 | // Later in the course we will store multiple matches in an array, so users can track their match history.
15 | struct RPSMatch {
16 |
17 | // MARK: Properties
18 |
19 | let p1: RPS
20 | let p2: RPS
21 |
22 | // MARK: Initializer
23 |
24 | init(p1: RPS, p2: RPS) {
25 | self.p1 = p1
26 | self.p2 = p2
27 | }
28 |
29 | // MARK: Computed Properties
30 |
31 | var winner: RPS {
32 | get {
33 | return p1.defeats(p2) ? p1 : p2
34 | }
35 | }
36 |
37 | var loser: RPS {
38 | get {
39 | return p1.defeats(p2) ? p2 : p1
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/RandomColorTextFieldDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RandomColorTextFieldDelegate.swift
3 | // TextFieldChallengeApps
4 | //
5 | // Created by Jason on 11/13/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 |
8 | //
9 |
10 | import Foundation
11 | import UIKit
12 |
13 | // MARK: - RandomColorTextFieldDelegate: NSObject, UITextFieldDelegate
14 |
15 | class RandomColorTextFieldDelegate: NSObject, UITextFieldDelegate {
16 |
17 | let colors = [UIColor.red,
18 | UIColor.orange, UIColor.yellow,
19 | UIColor.green, UIColor.blue,
20 | UIColor.purple, UIColor.brown];
21 |
22 | func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
23 | textField.textColor = self.randomColor()
24 |
25 | return true
26 | }
27 |
28 | func randomColor() -> UIColor {
29 | let randomIndex = Int(arc4random() % UInt32(colors.count))
30 |
31 | return colors[randomIndex]
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Udacity
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController
12 |
13 | class ViewController: UIViewController {
14 |
15 | // MARK: Outlets
16 |
17 | @IBOutlet weak var colorView: UIView!
18 | @IBOutlet weak var redControl: UISwitch!
19 | @IBOutlet weak var greenControl: UISwitch!
20 | @IBOutlet weak var blueControl: UISwitch!
21 |
22 | // MARK: Life Cycle
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 | // Do any additional setup after loading the view, typically from a nib.
27 | }
28 |
29 | // MARK: Actions
30 |
31 | @IBAction func changeColorComponent(_ sender: AnyObject) {
32 |
33 | let r: CGFloat = self.redControl.isOn ? 1 : 0
34 | let g: CGFloat = self.greenControl.isOn ? 1 : 0
35 | let b: CGFloat = self.blueControl.isOn ? 1 : 0
36 |
37 | colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController
12 |
13 | class ViewController: UIViewController {
14 |
15 | // MARK: Outlets
16 |
17 | @IBOutlet weak var colorView: UIView!
18 | @IBOutlet weak var redControl: UISwitch!
19 | @IBOutlet weak var greenControl: UISwitch!
20 | @IBOutlet weak var blueControl: UISwitch!
21 |
22 | // MARK: Life Cycle
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 | // Do any additional setup after loading the view, typically from a nib.
27 | }
28 |
29 | // MARK: Actions
30 |
31 | @IBAction func changeColorComponent(_ sender: AnyObject) {
32 |
33 | let r: CGFloat = self.redControl.isOn ? 1 : 0
34 | let g: CGFloat = self.greenControl.isOn ? 1 : 0
35 | let b: CGFloat = self.blueControl.isOn ? 1 : 0
36 |
37 | colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController
12 |
13 | class ViewController: UIViewController {
14 |
15 | // MARK: Outlets
16 |
17 | @IBOutlet weak var colorView: UIView!
18 | @IBOutlet weak var redControl: UISwitch!
19 | @IBOutlet weak var greenControl: UISwitch!
20 | @IBOutlet weak var blueControl: UISwitch!
21 |
22 | // MARK: Life Cycle
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 | // Do any additional setup after loading the view, typically from a nib.
27 | }
28 |
29 | // MARK: Actions
30 |
31 | @IBAction func changeColorComponent(_ sender: AnyObject) {
32 |
33 | let r: CGFloat = self.redControl.isOn ? 1 : 0
34 | let g: CGFloat = self.greenControl.isOn ? 1 : 0
35 | let b: CGFloat = self.blueControl.isOn ? 1 : 0
36 |
37 | colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController
12 |
13 | class ViewController: UIViewController {
14 |
15 | // MARK: Outlets
16 |
17 | @IBOutlet weak var colorView: UIView!
18 | @IBOutlet weak var redControl: UISlider!
19 | @IBOutlet weak var greenControl: UISlider!
20 | @IBOutlet weak var blueControl: UISlider!
21 |
22 | // MARK: Life Cycle
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 | // Do any additional setup after loading the view, typically from a nib.
27 | }
28 |
29 | // MARK: Actions
30 |
31 | @IBAction func changeColorComponent(_ sender: AnyObject) {
32 |
33 | let r: CGFloat = CGFloat(self.redControl.value)
34 | let g: CGFloat = CGFloat(self.greenControl.value)
35 | let b: CGFloat = CGFloat(self.blueControl.value)
36 |
37 | colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
38 | }
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/RollViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RollViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - RollViewController: UIViewController
12 |
13 | class RollViewController: UIViewController {
14 |
15 | // MARK: Generate Dice Value
16 |
17 | /**
18 | * Randomly generates a Int from 1 to 6
19 | */
20 | func randomDiceValue() -> Int {
21 | // Generate a random Int32 using arc4Random
22 | let randomValue = 1 + arc4random() % 6
23 |
24 | // Return a more convenient Int, initialized with the random value
25 | return Int(randomValue)
26 | }
27 |
28 | // MARK: Actions
29 |
30 | @IBAction func rollTheDice() {
31 | var controller: DiceViewController
32 |
33 | controller = self.storyboard?.instantiateViewController(withIdentifier: "DiceViewController") as! DiceViewController
34 |
35 | controller.firstValue = self.randomDiceValue()
36 | controller.secondValue = self.randomDiceValue()
37 |
38 | present(controller, animated: true, completion: nil)
39 | }
40 |
41 |
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/RollViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RollViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - RollViewController: UIViewController
12 |
13 | class RollViewController: UIViewController {
14 |
15 | // MARK: Segue
16 |
17 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
18 |
19 | if segue.identifier == "rollDice" {
20 |
21 | let controller = segue.destination as! DiceViewController
22 |
23 | controller.firstValue = self.randomDiceValue()
24 | controller.secondValue = self.randomDiceValue()
25 | }
26 | }
27 |
28 | // MARK: Generate Dice Value
29 |
30 | // randomly generates a Int from 1 to 6
31 | func randomDiceValue() -> Int {
32 | // Generate a random Int32 using arc4Random
33 | let randomValue = 1 + arc4random() % 6
34 |
35 | // Return a more convenient Int, initialized with the random value
36 | return Int(randomValue)
37 | }
38 |
39 | // MARK: Actions
40 |
41 | @IBAction func rollTheDice(){
42 |
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // ColorMaker
4 | //
5 | // Created by Jason Schatz on 11/2/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController
12 |
13 | class ViewController: UIViewController {
14 |
15 | // MARK: Outlets
16 |
17 | @IBOutlet weak var colorView: UIView!
18 | @IBOutlet weak var redControl: UISwitch!
19 | @IBOutlet weak var greenControl: UISwitch!
20 | @IBOutlet weak var blueControl: UISwitch!
21 |
22 | // MARK: Life Cycle
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 |
27 | // Set colorView on launch
28 | changeColorComponent()
29 | }
30 |
31 | // MARK: Actions
32 |
33 | @IBAction func changeColorComponent() {
34 |
35 | // Make sure the program doesn't crash if the controls aren't connected
36 | if self.redControl == nil {
37 | return
38 | }
39 |
40 | let r: CGFloat = self.redControl.isOn ? 1 : 0
41 | let g: CGFloat = self.greenControl.isOn ? 1 : 0
42 | let b: CGFloat = self.blueControl.isOn ? 1 : 0
43 |
44 | colorView.backgroundColor = UIColor(red: r, green: g, blue: b, alpha: 1)
45 | }
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/ChoiceViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChoiceViewController.swift
3 | // Roshambo
4 | //
5 |
6 | import UIKit
7 |
8 | // MARK: - ChoiceViewController: UIViewController
9 |
10 | class ChoiceViewController: UIViewController {
11 |
12 | // MARK: Programmatic Approach
13 |
14 | @IBAction private func playRock(_ sender: UIButton) {
15 | let vc = self.storyboard?.instantiateViewController(withIdentifier: "ResultsViewController") as! ResultsViewController
16 | vc.userChoice = getUserShape(sender)
17 | present(vc, animated: true, completion: nil)
18 | }
19 |
20 | // MARK: Segue with Code Approach
21 |
22 | @IBAction private func playPaper(_ sender: UIButton) {
23 | performSegue(withIdentifier: "play", sender: sender)
24 | }
25 |
26 | // MARK: Segue
27 |
28 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
29 | if segue.identifier == "play" {
30 | let vc = segue.destination as! ResultsViewController
31 | vc.userChoice = getUserShape(sender as! UIButton)
32 | }
33 | }
34 |
35 | // MARK: Utilities
36 |
37 | // The enum "Shape" represents a play or move
38 | private func getUserShape(_ sender: UIButton) -> Shape {
39 | // Titles are set to one of: Rock, Paper, or Scissors
40 | let shape = sender.title(for: UIControl.State())!
41 | return Shape(rawValue: shape)!
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/RPS.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RPS
3 | // RockPaperScissors
4 | //
5 | // Created by Jason on 11/14/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // MARK: - RPS
12 |
13 | // the RPS enum represents a move.
14 | enum RPS {
15 | case rock, paper, scissors
16 |
17 | // The init method randomly generates the opponent's move
18 | init() {
19 | switch arc4random() % 3 {
20 |
21 | case 0:
22 | self = .rock
23 | case 1:
24 | self = .paper
25 | default:
26 | self = .scissors
27 | }
28 | }
29 |
30 | // The defeats method defines the hierarchy of moves, Rock defeats Scissors etc.
31 | func defeats(_ opponent: RPS) -> Bool {
32 | switch (self, opponent) {
33 | case (.paper, .rock), (.scissors, .paper), (.rock, .scissors):
34 | return true;
35 | default:
36 | return false;
37 | }
38 | }
39 | }
40 |
41 | // MARK: - RPS: CustomStringConvertible
42 |
43 | extension RPS: CustomStringConvertible {
44 |
45 | var description: String {
46 | get {
47 | switch (self) {
48 | case .rock:
49 | return "Rock"
50 | case .paper:
51 | return "Paper"
52 | case .scissors:
53 | return "Scissors"
54 | }
55 | }
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // TextFieldChallengeApps
4 | //
5 | // Created by Jason on 11/12/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController, UITextFieldDelegate
12 |
13 | class ViewController: UIViewController, UITextFieldDelegate {
14 |
15 | // MARK: Properties
16 |
17 | let zipCodeDelegate = ZipCodeTextFieldDelegate()
18 | let cashDelegate = CashTextFieldDelegate()
19 |
20 | // MARK: Outlets
21 |
22 | @IBOutlet weak var textField1: UITextField!
23 | @IBOutlet weak var textField2: UITextField!
24 | @IBOutlet weak var textField3: UITextField!
25 | @IBOutlet weak var editingSwitch: UISwitch!
26 |
27 | // MARK: Life Cycle
28 |
29 | override func viewDidLoad() {
30 | super.viewDidLoad()
31 |
32 | self.textField1.delegate = self.zipCodeDelegate
33 | self.textField2.delegate = self.cashDelegate
34 | self.textField3.delegate = self
35 |
36 | self.editingSwitch.setOn(false, animated: false)
37 | }
38 |
39 | // MARK: Text Field Delegate
40 |
41 | func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
42 | return self.editingSwitch.isOn
43 | }
44 |
45 | func textFieldShouldReturn(_ textField: UITextField) -> Bool {
46 | textField.resignFirstResponder()
47 |
48 | return true;
49 | }
50 |
51 | // MARK: Actions
52 |
53 | @IBAction func toggleTheTextEditor(_ sender: AnyObject) {
54 |
55 | if !(sender as! UISwitch).isOn {
56 | self.textField3.resignFirstResponder()
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/ColorMaker.xcscmblueprint:
--------------------------------------------------------------------------------
1 | {
2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764",
3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
4 |
5 | },
6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
7 | "68DE251D786A8ACDD6F79D1A7580150D373C08E6" : 0,
8 | "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764" : 0
9 | },
10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "1ED2661B-253E-4445-B018-D4BBA33222AD",
11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
12 | "68DE251D786A8ACDD6F79D1A7580150D373C08E6" : "",
13 | "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764" : "step1.1-colorMaker-incomplete\/"
14 | },
15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "ColorMaker",
16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204,
17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "ColorMaker\/ColorMaker.xcodeproj",
18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
19 | {
20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/EdenShapiro\/ios-nanodegree-uikit-2.0.git",
21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764"
23 | },
24 | {
25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/udacity\/ios-nd-uikit.git",
26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "68DE251D786A8ACDD6F79D1A7580150D373C08E6"
28 | }
29 | ]
30 | }
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker.xcodeproj/project.xcworkspace/xcshareddata/ColorMaker.xcscmblueprint:
--------------------------------------------------------------------------------
1 | {
2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764",
3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
4 |
5 | },
6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
7 | "68DE251D786A8ACDD6F79D1A7580150D373C08E6" : 0,
8 | "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764" : 0
9 | },
10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "60DC7A10-361B-4984-A478-05C7B6A40BE4",
11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
12 | "68DE251D786A8ACDD6F79D1A7580150D373C08E6" : "",
13 | "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764" : "step1.5-colorMaker-sliders-solution\/"
14 | },
15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "ColorMaker",
16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204,
17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "ColorMaker-Sliders\/ColorMaker.xcodeproj",
18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
19 | {
20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/EdenShapiro\/ios-nanodegree-uikit-2.0.git",
21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "32DB2AE76EBCD6D3DE3258C1B15BF45A6A20F764"
23 | },
24 | {
25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/udacity\/ios-nd-uikit.git",
26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "68DE251D786A8ACDD6F79D1A7580150D373C08E6"
28 | }
29 | ]
30 | }
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/DiceViewController.swift:
--------------------------------------------------------------------------------
1 | // DiceViewController.swift
2 | // Dice
3 | //
4 | // Created by Jason Schatz on 11/6/14.
5 | // Copyright (c) 2014 Udacity. All rights reserved.
6 | //
7 |
8 | import Foundation
9 | import UIKit
10 |
11 | // MARK: DiceViewController: UIViewController
12 |
13 | class DiceViewController: UIViewController {
14 |
15 | // MARK: Properties
16 |
17 | var firstValue: Int?
18 | var secondValue: Int?
19 |
20 | // MARK: Outlets
21 |
22 | @IBOutlet var firstDie: UIImageView!
23 | @IBOutlet var secondDie: UIImageView!
24 |
25 | // MARK: Life Cycle
26 |
27 | override func viewWillAppear(_ animated: Bool) {
28 |
29 | // The dice will only appear if firstValue and secondValue have been set
30 | if let firstValue = self.firstValue {
31 | self.firstDie.image = UIImage(named: "d\(firstValue)")
32 | } else {
33 | self.firstDie.image = nil;
34 | }
35 |
36 | if let secondValue = self.secondValue {
37 | self.secondDie.image = UIImage(named: "d\(secondValue)")
38 | } else {
39 | self.secondDie.image = nil
40 | }
41 |
42 | self.firstDie.alpha = 0
43 | self.secondDie.alpha = 0
44 | }
45 |
46 | override func viewDidAppear(_ animated: Bool) {
47 | UIView.animate(withDuration: 0.3) {
48 | self.firstDie.alpha = 1
49 | self.secondDie.alpha = 1
50 | }
51 | }
52 |
53 | /**
54 | * accepts a conditional Int, and returns an dice image, or nil
55 | */
56 | func imageForValue(_ value: Int?) -> UIImage? {
57 | return nil
58 | }
59 |
60 | /**
61 | * dismiss this view controller
62 | */
63 | func dismiss() {
64 | self.dismiss(animated: true, completion: nil)
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/.github/workflows/manual.yml:
--------------------------------------------------------------------------------
1 | # Workflow to ensure whenever a Github PR is submitted,
2 | # a JIRA ticket gets created automatically.
3 | name: Manual Workflow
4 |
5 | # Controls when the action will run.
6 | on:
7 | # Triggers the workflow on pull request events but only for the master branch
8 | pull_request_target:
9 | types: [opened, reopened]
10 |
11 | # Allows you to run this workflow manually from the Actions tab
12 | workflow_dispatch:
13 |
14 | jobs:
15 | test-transition-issue:
16 | name: Convert Github Issue to Jira Issue
17 | runs-on: ubuntu-latest
18 | steps:
19 | - name: Checkout
20 | uses: actions/checkout@master
21 |
22 | - name: Login
23 | uses: atlassian/gajira-login@master
24 | env:
25 | JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
26 | JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
27 | JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
28 |
29 | - name: Create NEW JIRA ticket
30 | id: create
31 | uses: atlassian/gajira-create@master
32 | with:
33 | project: CONUPDATE
34 | issuetype: Task
35 | summary: |
36 | Github PR [Assign the ND component] | Repo: ${{ github.repository }} | PR# ${{github.event.number}}
37 | description: |
38 | Repo link: https://github.com/${{ github.repository }}
39 | PR no. ${{ github.event.pull_request.number }}
40 | PR title: ${{ github.event.pull_request.title }}
41 | PR description: ${{ github.event.pull_request.description }}
42 | In addition, please resolve other issues, if any.
43 | fields: '{"components": [{"name":"Github PR"}], "customfield_16449":"https://classroom.udacity.com/", "customfield_16450":"Resolve the PR", "labels": ["github"], "priority":{"id": "4"}}'
44 |
45 | - name: Log created issue
46 | run: echo "Issue ${{ steps.create.outputs.issue }} was created"
47 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/DiceViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiceViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | // MARK: - DiceViewController: UIViewController
13 |
14 | class DiceViewController: UIViewController {
15 |
16 | // MARK: Properties
17 |
18 | var firstValue: Int?
19 | var secondValue: Int?
20 |
21 | // MARK: Outlets
22 |
23 | @IBOutlet weak var firstDie: UIImageView!
24 | @IBOutlet weak var secondDie: UIImageView!
25 |
26 | // MARK: Life Cycle
27 |
28 | override func viewWillAppear(_ animated: Bool) {
29 |
30 | // The dice will only appear if firstValue and secondValue have been set
31 | if let firstValue = self.firstValue {
32 | self.firstDie.image = UIImage(named: "d\(firstValue)")
33 | } else {
34 | self.firstDie.image = nil;
35 | }
36 |
37 | if let secondValue = self.secondValue {
38 | self.secondDie.image = UIImage(named: "d\(secondValue)")
39 | } else {
40 | self.secondDie.image = nil
41 | }
42 |
43 | self.firstDie.alpha = 0
44 | self.secondDie.alpha = 0
45 | }
46 |
47 | override func viewDidAppear(_ animated: Bool) {
48 | UIView.animate(withDuration: 0.3) {
49 | self.firstDie.alpha = 1
50 | self.secondDie.alpha = 1
51 | }
52 | }
53 |
54 | // MARK: Generate Image for Dice
55 |
56 | func imageForValue(_ value: Int?) -> UIImage? {
57 | // accepts a conditional Int, and returns an dice image, or nil
58 | return nil
59 | }
60 |
61 | // MARK: Actions
62 |
63 | @IBAction func dismiss() {
64 | // dismiss this view controller
65 | self.dismiss(animated: true, completion: nil)
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/DiceViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiceViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | // MARK: - DiceViewController: UIViewController
13 |
14 | class DiceViewController: UIViewController {
15 |
16 | // MARK: Properties
17 |
18 | var firstValue: Int?
19 | var secondValue: Int?
20 |
21 | // MARK: Outlets
22 |
23 | @IBOutlet weak var firstDie: UIImageView!
24 | @IBOutlet weak var secondDie: UIImageView!
25 |
26 | // MARK: Life Cycle
27 |
28 | override func viewWillAppear(_ animated: Bool) {
29 |
30 | // The dice will only appear if firstValue and secondValue have been set
31 | if let firstValue = self.firstValue {
32 | self.firstDie.image = UIImage(named: "d\(firstValue)")
33 | } else {
34 | self.firstDie.image = nil;
35 | }
36 |
37 | if let secondValue = self.secondValue {
38 | self.secondDie.image = UIImage(named: "d\(secondValue)")
39 | } else {
40 | self.secondDie.image = nil
41 | }
42 |
43 | self.firstDie.alpha = 0
44 | self.secondDie.alpha = 0
45 | }
46 |
47 | override func viewDidAppear(_ animated: Bool) {
48 |
49 | UIView.animate(withDuration: 0.3) {
50 | self.firstDie.alpha = 1
51 | self.secondDie.alpha = 1
52 | }
53 | }
54 |
55 | // MARK: Generate Image for Dice
56 |
57 | func imageForValue(_ value: Int?) -> UIImage? {
58 | // accepts a conditional Int, and returns an dice image, or nil
59 | return nil
60 | }
61 |
62 | // MARK: Actions
63 |
64 | @IBAction func dismiss() {
65 | // dismiss this view controller
66 | self.dismiss(animated: true, completion: nil)
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/DiceViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiceViewController.swift
3 | // Dice
4 | //
5 | // Created by Jason Schatz on 11/6/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | // MARK: - DiceViewController: UIViewController
13 |
14 | class DiceViewController: UIViewController {
15 |
16 | // MARK: Properties
17 |
18 | var firstValue: Int?
19 | var secondValue: Int?
20 |
21 | // MARK: Outlets
22 |
23 | @IBOutlet weak var firstDie: UIImageView!
24 | @IBOutlet weak var secondDie: UIImageView!
25 |
26 | // MARK: Life Cycle
27 |
28 | override func viewWillAppear(_ animated: Bool) {
29 |
30 | // The dice will only appear if firstValue and secondValue have been set
31 | if let firstValue = self.firstValue {
32 | self.firstDie.image = UIImage(named: "d\(firstValue)")
33 | } else {
34 | self.firstDie.image = nil;
35 | }
36 |
37 | if let secondValue = self.secondValue {
38 | self.secondDie.image = UIImage(named: "d\(secondValue)")
39 | } else {
40 | self.secondDie.image = nil
41 | }
42 |
43 | self.firstDie.alpha = 0
44 | self.secondDie.alpha = 0
45 | }
46 |
47 | override func viewDidAppear(_ animated: Bool) {
48 |
49 | UIView.animate(withDuration: 0.3) {
50 | self.firstDie.alpha = 1
51 | self.secondDie.alpha = 1
52 | }
53 | }
54 |
55 | // MARK: Generate Image for Dice
56 |
57 | func imageForValue(_ value: Int?) -> UIImage? {
58 | // accepts a conditional Int, and returns an dice image, or nil
59 | return nil
60 | }
61 |
62 | // MARK: Actions
63 |
64 | @IBAction func dismiss() {
65 | // dismiss this view controller
66 | self.dismiss(animated: true, completion: nil)
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.2-codeAndSegueReview/Dice/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.3-stepsForSegueOnly/Dice/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.4-prepareForSegueReview/Dice/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step1.1-colorMaker-incomplete/ColorMaker/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.1-dice-incomplete/Dice Incomplete/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step3.1-textFieldsApp/TextFields/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // TextFields
4 | //
5 | // Created by Jason on 11/11/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // MARK: - ViewController: UIViewController, UITextFieldDelegate
12 |
13 | class ViewController: UIViewController, UITextFieldDelegate {
14 |
15 | // MARK: Outlets
16 | @IBOutlet weak var textField1: UITextField!
17 | @IBOutlet weak var textField2: UITextField!
18 | @IBOutlet weak var textField3: UITextField!
19 | @IBOutlet weak var characterCountLabel: UILabel!
20 |
21 | // MARK: Text Field Delegate objects
22 | let emojiDelegate = EmojiTextFieldDelegate()
23 | let colorizerDelegate = ColorizerTextFieldDelegate()
24 |
25 | // MARK: Life Cycle
26 |
27 | override func viewDidLoad() {
28 | super.viewDidLoad()
29 |
30 | // set the label to be hidden
31 | self.characterCountLabel.isHidden = true
32 |
33 | // Set the three delegates
34 | self.textField1.delegate = emojiDelegate
35 | self.textField2.delegate = colorizerDelegate
36 | self.textField3.delegate = self
37 | }
38 |
39 | // MARK: Text Field Delegate Methods
40 |
41 | func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
42 |
43 | // Figure out what the new text will be, if we return true
44 | var newText = textField.text! as NSString
45 | newText = newText.replacingCharacters(in: range, with: string) as NSString
46 |
47 | // hide the label if the newText will be an empty string
48 | self.characterCountLabel.isHidden = (newText.length == 0)
49 |
50 | // Write the length of newText into the label
51 | self.characterCountLabel.text = String(newText.length)
52 |
53 | // returning true gives the text field permission to change its text
54 | return true;
55 | }
56 | }
57 |
58 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/step1.2-colorError1/ColorMaker/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step1.3-colorError2/ColorMaker/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step1.4-colorError3/ColorMaker/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step1.5-colorMaker-sliders-solution/ColorMaker/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step2.7-roshambo-separateModel/RockPaperScissors/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x",
7 | "filename" : "Icon-Small@2x.png"
8 | },
9 | {
10 | "idiom" : "iphone",
11 | "size" : "29x29",
12 | "scale" : "3x",
13 | "filename" : "Icon-Small@3x.png"
14 | },
15 | {
16 | "idiom" : "iphone",
17 | "size" : "40x40",
18 | "scale" : "2x",
19 | "filename" : "Icon-40@2x.png"
20 | },
21 | {
22 | "idiom" : "iphone",
23 | "size" : "40x40",
24 | "scale" : "3x",
25 | "filename" : "Icon-40@3x.png"
26 | },
27 | {
28 | "idiom" : "iphone",
29 | "size" : "60x60",
30 | "scale" : "2x",
31 | "filename" : "Icon-60@2x.png"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "3x",
37 | "filename" : "Icon-60@3x.png"
38 | },
39 | {
40 | "idiom" : "ipad",
41 | "size" : "29x29",
42 | "scale" : "1x",
43 | "filename" : "Icon-Small.png"
44 | },
45 | {
46 | "idiom" : "ipad",
47 | "size" : "29x29",
48 | "scale" : "2x",
49 | "filename" : "Icon-Small@2x.png"
50 | },
51 | {
52 | "idiom" : "ipad",
53 | "size" : "40x40",
54 | "scale" : "1x",
55 | "filename" : "Icon-40.png"
56 | },
57 | {
58 | "idiom" : "ipad",
59 | "size" : "40x40",
60 | "scale" : "2x",
61 | "filename" : "Icon-40@2x.png"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "76x76",
66 | "scale" : "1x",
67 | "filename" : "Icon-76.png"
68 | },
69 | {
70 | "idiom" : "ipad",
71 | "size" : "76x76",
72 | "scale" : "2x",
73 | "filename" : "Icon-76@2x.png"
74 | },
75 | {
76 | "idiom" : "ipad",
77 | "size" : "83.5x83.5",
78 | "scale" : "2x",
79 | "filename" : "Icon-83.5@2x.png"
80 | }
81 | ],
82 | "info" : {
83 | "version" : 1,
84 | "author" : "makeappicon"
85 | }
86 | }
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/CashTextFieldDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CashTextFieldDelegate.swift
3 | // TextFieldChallengeApps
4 | //
5 | // Created by Jason on 11/12/14.
6 | // Copyright (c) 2014 Udacity. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | // MARK: - CashTextFieldDelegate: NSObject, UITextFieldDelegate
13 |
14 | class CashTextFieldDelegate: NSObject, UITextFieldDelegate {
15 |
16 | func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
17 |
18 | let oldText = textField.text! as NSString
19 | var newText = oldText.replacingCharacters(in: range, with: string)
20 | var newTextString = String(newText)
21 |
22 | let digits = CharacterSet.decimalDigits
23 | var digitText = ""
24 | for c in (newTextString.unicodeScalars) {
25 | if digits.contains(UnicodeScalar(c.value)!) {
26 | digitText.append("\(c)")
27 | }
28 | }
29 |
30 | // Format the new string
31 | if let numOfPennies = Int(digitText) {
32 | newText = "$" + self.dollarStringFromInt(numOfPennies) + "." + self.centsStringFromInt(numOfPennies)
33 | } else {
34 | newText = "$0.00"
35 | }
36 |
37 | textField.text = newText
38 |
39 | return false
40 | }
41 |
42 | func textFieldDidBeginEditing(_ textField: UITextField) {
43 | if textField.text!.isEmpty {
44 | textField.text = "$0.00"
45 | }
46 | }
47 |
48 | func textFieldShouldReturn(_ textField: UITextField) -> Bool {
49 | textField.resignFirstResponder()
50 |
51 | return true;
52 | }
53 |
54 | func dollarStringFromInt(_ value: Int) -> String {
55 | return String(value / 100)
56 | }
57 |
58 | func centsStringFromInt(_ value: Int) -> String {
59 |
60 | let cents = value % 100
61 | var centsString = String(cents)
62 |
63 | if cents < 10 {
64 | centsString = "0" + centsString
65 | }
66 |
67 | return centsString
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/step3.2-textFieldsChallengeApp-solution/TextFieldChallengeApps/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "size" : "29x29",
15 | "idiom" : "iphone",
16 | "filename" : "Icon-Small@2x.png",
17 | "scale" : "2x"
18 | },
19 | {
20 | "size" : "29x29",
21 | "idiom" : "iphone",
22 | "filename" : "Icon-Small@3x.png",
23 | "scale" : "3x"
24 | },
25 | {
26 | "size" : "40x40",
27 | "idiom" : "iphone",
28 | "filename" : "Icon-40@2x.png",
29 | "scale" : "2x"
30 | },
31 | {
32 | "size" : "40x40",
33 | "idiom" : "iphone",
34 | "filename" : "Icon-40@3x.png",
35 | "scale" : "3x"
36 | },
37 | {
38 | "size" : "60x60",
39 | "idiom" : "iphone",
40 | "filename" : "Icon-60@2x.png",
41 | "scale" : "2x"
42 | },
43 | {
44 | "size" : "60x60",
45 | "idiom" : "iphone",
46 | "filename" : "Icon-60@3x.png",
47 | "scale" : "3x"
48 | },
49 | {
50 | "idiom" : "ipad",
51 | "size" : "20x20",
52 | "scale" : "1x"
53 | },
54 | {
55 | "idiom" : "ipad",
56 | "size" : "20x20",
57 | "scale" : "2x"
58 | },
59 | {
60 | "size" : "29x29",
61 | "idiom" : "ipad",
62 | "filename" : "Icon-Small.png",
63 | "scale" : "1x"
64 | },
65 | {
66 | "size" : "29x29",
67 | "idiom" : "ipad",
68 | "filename" : "Icon-Small@2x.png",
69 | "scale" : "2x"
70 | },
71 | {
72 | "size" : "40x40",
73 | "idiom" : "ipad",
74 | "filename" : "Icon-40.png",
75 | "scale" : "1x"
76 | },
77 | {
78 | "size" : "40x40",
79 | "idiom" : "ipad",
80 | "filename" : "Icon-40@2x.png",
81 | "scale" : "2x"
82 | },
83 | {
84 | "size" : "76x76",
85 | "idiom" : "ipad",
86 | "filename" : "Icon-76.png",
87 | "scale" : "1x"
88 | },
89 | {
90 | "size" : "76x76",
91 | "idiom" : "ipad",
92 | "filename" : "Icon-76@2x.png",
93 | "scale" : "2x"
94 | },
95 | {
96 | "size" : "83.5x83.5",
97 | "idiom" : "ipad",
98 | "filename" : "Icon-83.5@2x.png",
99 | "scale" : "2x"
100 | }
101 | ],
102 | "info" : {
103 | "version" : 1,
104 | "author" : "xcode"
105 | }
106 | }
--------------------------------------------------------------------------------
/step2.6-roshambo-exampleSolution/Roshambo/ResultsViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ResultsViewController.swift
3 | // Roshambo
4 | //
5 |
6 | import UIKit
7 |
8 | // MARK: - Shape: String
9 |
10 | // The enum "Shape" represents a play or move
11 | enum Shape: String {
12 | case Rock = "Rock"
13 | case Paper = "Paper"
14 | case Scissors = "Scissors"
15 |
16 | // This function randomly generates an opponent's play
17 | static func randomShape() -> Shape {
18 | let shapes = ["Rock", "Paper", "Scissors"]
19 | let randomChoice = Int(arc4random_uniform(3))
20 | return Shape(rawValue: shapes[randomChoice])!
21 | }
22 | }
23 |
24 | // MARK: - ResultsViewController: UIViewController
25 |
26 | class ResultsViewController: UIViewController {
27 |
28 | // MARK: Outlets
29 |
30 | @IBOutlet private weak var resultImage: UIImageView!
31 | @IBOutlet private weak var resultLabel: UILabel!
32 |
33 | // MARK: Properties
34 |
35 | // When the ResultsViewController is initialized a userChoice is passed in and an opponent's play is generated.
36 | var userChoice: Shape!
37 | private let opponentChoice: Shape = Shape.randomShape()
38 |
39 | // MARK: Life Cycle
40 |
41 | override func viewWillAppear(_ animated: Bool) {
42 | super.viewWillAppear(animated)
43 | displayResult()
44 | }
45 |
46 | // MARK: UI
47 |
48 | // The displayResult method generates the image and message for the results of a match.
49 | private func displayResult() {
50 | // Ideally, most of this would be handled by a model.
51 | var imageName: String
52 | var text: String
53 | let matchup = "\(userChoice.rawValue) vs. \(opponentChoice.rawValue)"
54 |
55 | // Why is an exclamation point necessary? :)
56 | switch (userChoice!, opponentChoice) {
57 | case let (user, opponent) where user == opponent:
58 | text = "\(matchup): it's a tie!"
59 | imageName = "tie"
60 | case (.Rock, .Scissors), (.Paper, .Rock), (.Scissors, .Paper):
61 | text = "You win with \(matchup)!"
62 | imageName = "\(userChoice.rawValue)-\(opponentChoice.rawValue)"
63 | default:
64 | text = "You lose with \(matchup) :(."
65 | imageName = "\(opponentChoice.rawValue)-\(userChoice.rawValue)"
66 | }
67 |
68 | imageName = imageName.lowercased()
69 | resultImage.image = UIImage(named: imageName)
70 | resultLabel.text = text
71 | }
72 |
73 | // MARK: Actions
74 |
75 | @IBAction private func playAgain() {
76 | dismiss(animated: true, completion: nil)
77 | }
78 | }
79 |
--------------------------------------------------------------------------------