Mike Corrato
Mike Corrato

Reputation: 85

Swift expecting declaration but already declared

I am trying to create an alert view that performs a certain action when the button is clicked. I have tried creating a new class for the alert view, but when I try to add an action to the alert view controller, Xcode tells me that it is expecting a declaration, although the variable is declared just two steps above the line where the error occurs. Here's the code

class alerts: UIAlertController {

var alertThenGenerateNewThingController: UIAlertController = UIAlertController()

var generateNewThingOkButton = UIAlertAction (title: "OK", style: UIAlertActionStyle.Default) {
    UIAlertAction in

    println ("generate new thing action")

}

alertThenGenerateNewThingController.addAction (generateNewThingOkButton) // Here is where Xcode says it expected a declaration

func alertThenGenerateNewThing (alertTitle: String, alertMessage: String) {

    alertThenGenerateNewThingController = UIAlertController (title: alertTitle, message: alertMessage, preferredStyle: .Alert)
    self.presentViewController (alertThenGenerateNewThingController, animated: true, completion: nil)

}

}

Upvotes: 2

Views: 824

Answers (1)

kellanburket
kellanburket

Reputation: 12843

You can't subclass UIAlertController, for one thing. Second of all, you can only interact with object properties inside of methods, functions, or the global scope. Run this code inside of the view controller where you plan on presenting your alert:

class viewController: UIViewController {

    var alertThenGenerateNewThingController: UIAlertController = UIAlertController()

    var generateNewThingOkButton = UIAlertAction (title: "OK", style: UIAlertActionStyle.Default) {
        UIAlertAction in

        println ("generate new thing action")

    }

    override func viewDidLoad() {
        alertThenGenerateNewThingController.addAction(generateNewThingOkButton)
    }


    func alertThenGenerateNewThing (alertTitle: String, alertMessage: String) {
        alertThenGenerateNewThingController = UIAlertController (title: alertTitle, message: alertMessage, preferredStyle: .Alert)
        self.presentViewController (alertThenGenerateNewThingController, animated: true, completion: nil)

    }

}

Upvotes: 1

Related Questions