├── 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 | iOS Developer Nanodegree logo 2 | 3 | # UIKit Fundamentals 4 | 5 | ![Platform iOS](https://img.shields.io/badge/nanodegree-iOS-blue.svg) 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 | --------------------------------------------------------------------------------