Q:

Error: Could not cast value of type 'FirstApp.ChoosePageViewController' to 'FirstApp.CreateAccountPageViewController'

I am using Xcode 6.3.2 creating a single view app. 
I have it set up so that the first view controller is a home page (Figure 1.), and when it appears, it automatically goes to a login/register/guest page. (Figure 2.) 
From there, if someone chooses register, it brings them to a quick screen (Figure 3.) which is sort of just a background view to check if the registration works. From that screen, it automatically brings up the registration page. (Figure 4.) 
Then, if registration is completed or successful, the registration page is dismissed back to that checking screen which is then dismissed to go back to the login/register/guest page.
Can't add many links so I uploaded a zip folder of my project plus the 4 images.
My Project:
http://www.mediafire.com/download/dnv1vqlx3j741zv/FirstApp.zip
Everything works up to the point where registration is cancelled. If registration is cancelled it will go back to the checking screen, then is just stuck there. I looked around and just couldn't find anything that worked for me to solve the issue and I unfortunately could not figure out the solution from the error message. Thank you to anyone who helps!
My Error Message:
Could not cast value of type 'FirstApp.ChoosePageViewController' (0x101edd680) to 'FirstApp.CreateAccountPageViewController' (0x101edd380).
(lldb) 
The Login/Register/Guest Page View Controller:
import UIKit

class ChoosePageViewController: UIViewController {

//Sets Button Outlets to Edit Displays
@IBOutlet weak var viewLoginButton: UIButton!
@IBOutlet weak var viewRegisterButton: UIButton!
@IBOutlet weak var viewGuestButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.

    viewLoginButton.layer.cornerRadius = 5.0
    viewRegisterButton.layer.cornerRadius = 5.0
    viewGuestButton.layer.cornerRadius = 5.0
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

The Registration Check Page View Controller:
import UIKit

class RegistrationCheckPageViewController: UIViewController, DetailsDelegate {

@IBOutlet weak var viewRegistrationStatusLabel: UILabel!
@IBOutlet weak var viewRegistrationForceQuitLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

//Allow CreateAccountPage to Edit RegistrationCheckPage Labels
func labelDelegateMethodWithString(RegistrationStatus: String, RegistrationForceQuit: String) {
    viewRegistrationStatusLabel.text! = RegistrationStatus
    viewRegistrationForceQuitLabel.text! = RegistrationForceQuit
}

//Prepare RegistrationCheckPage Controller for CreateAccountPage Controller Takeover
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    let controller = segue.destinationViewController as! CreateAccountPageViewController
    controller.delegate = self
}

//Immediately Present Create Account Page, Dismiss When Account is Created
//Display Error and Return to Create Account Page if Account Creation Fails Unexpectedly
override func viewDidAppear(animated: Bool) {

    if(viewRegistrationStatusLabel.text == "Complete!") {
        self.performSegueWithIdentifier("toChoosePageFromRegistrationCheckPage", sender: self)
    } else if(viewRegistrationForceQuitLabel.text == "Active") {
        displayErrorAlert("Account not created.")
        self.performSegueWithIdentifier("toChoosePageFromRegistrationCheckPage", sender: self)
    } else if(viewRegistrationStatusLabel.text == "Checking..." && viewRegistrationForceQuitLabel.text == "Inactive"){
    } else {
        displayErrorAlert("An unknown error occurred.")
    }

    self.performSegueWithIdentifier("toCreateAccountPage", sender: self)
}

func displayErrorAlert(displayMessage: String) {
    var myAlert = UIAlertController(title: "Error", message: displayMessage, preferredStyle: UIAlertControllerStyle.Alert)
    let dismissAction = UIAlertAction(title: "Retry", style: UIAlertActionStyle.Default, handler: nil)
    myAlert.addAction(dismissAction)
    self.presentViewController(myAlert, animated: true, completion: nil)
}

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/

}

The Create Account Page View Controller:
import UIKit

//Allows RegistrationCheckPage and CreateAccountPage to Communicate
protocol DetailsDelegate {
    func labelDelegateMethodWithString(RegistrationStatus: String, RegistrationForceQuit: String)
}

class CreateAccountPageViewController: UIViewController {

//Sets Button Outlets to Edit Displays
@IBOutlet weak var viewCreateButton: UIButton!
@IBOutlet weak var viewCancelButton: UIButton!

var registrationStatus = "Checking..."
var registrationForceQuit = "Inactive"

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    viewCreateButton.layer.cornerRadius = 5.0
    viewCancelButton.layer.cornerRadius = 5.0
}

//CreateAccountPage Allows or Disallows RegistrationCheckPage to Continue
var delegate: DetailsDelegate!
override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    delegate.labelDelegateMethodWithString(registrationStatus, RegistrationForceQuit: registrationForceQuit)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBOutlet weak var userUsernameTextField: UITextField!
@IBOutlet weak var userEmailTextField: UITextField!
@IBOutlet weak var userPasswordTextField: UITextField!
@IBOutlet weak var userRepeatPasswordTextField: UITextField!

@IBAction func didPressCreateAccountButton(sender: AnyObject) {

    let userUsername = userUsernameTextField.text;
    let userEmail = userEmailTextField.text;
    let userPassword = userPasswordTextField.text;
    let userPasswordRepeat = userRepeatPasswordTextField.text;

    func displayAlert(displayMessage:String) {
        var myAlert = UIAlertController(title: "Wait!", message:displayMessage, preferredStyle: UIAlertControllerStyle.Alert)
        let dismissAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)
        myAlert.addAction(dismissAction)
        self.presentViewController(myAlert, animated: true, completion: nil)
    }

    //Check for Empty Fields
    if(userUsername.isEmpty || userEmail.isEmpty || userPassword.isEmpty || userPasswordRepeat.isEmpty) {
        displayAlert("All fields are required!")
        return;
    }

    //Make Sure Username Is Not In Use
    /*if(username is in use) {
    displayAlert("Username is already in use.")
    return;
    }*/

    //Make Sure Passwords Match
    if(userPassword != userPasswordRepeat) {
        displayAlert("The passwords did not match!")
        return;
    }

    //Store Data

    //Successful Registration
    registrationStatus = "Complete!"
    registrationForceQuit = "Inactive"
    delegate.labelDelegateMethodWithString(registrationStatus, RegistrationForceQuit: registrationForceQuit)
    self.dismissViewControllerAnimated(true, completion: nil)
}

//Cancel the Registration Without Finishing
@IBAction func didPressCancelRegistrationButton(sender: AnyObject) {
    registrationStatus = "Failed"
    registrationForceQuit = "Active"
    delegate.labelDelegateMethodWithString(registrationStatus, RegistrationForceQuit: registrationForceQuit)
    self.dismissViewControllerAnimated(true, completion: nil)
}

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/

}

A:

In this line:
let controller = segue.destinationViewController as! CreateAccountPageViewController

Your segue.destinationViewController is not what you expected it to be, it is actually a ChoosePageViewController. 
You have two segues, "toChoosePageFromRegistrationCheckPage" and "toCreateAccountPage". 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    let controller = segue.destinationViewController as! CreateAccountPageViewController
    controller.delegate = self
}

Right here, you have to check if segue.identifier is equal to "toChoosePageFromRegistrationCheckPage" or "toCreateAccountPage" and based on the identifier, cast the destination to the appropriate view controller.

