swift_dan
swift_dan

Reputation: 2648

Present Alert on ViewController only once

I am having various ViewControllers in my app. On one of them I want a alert to be displayed on load of the VC once to the user.

I have followed the instructions to set a glob var under the import section:

var disalert:Bool = true

and in the function I got:

if disalert {

    let actionSheetController: UIAlertController = UIAlertController(title: "How-to use Holiday List", message: "message here", preferredStyle: .Alert)

    //Create and add the Cancel action

    //Create and an option action
    let nextAction: UIAlertAction = UIAlertAction(title: "OK", style: .Default) { action -> Void in

    }
    actionSheetController.addAction(nextAction)
    //Add a text field
    //Present the AlertController
    self.presentViewController(actionSheetController, animated: true, completion: nil)

    disalert = false

}

The alert is not presented whilst the app is open. When I restart the phone or quit the app completely its again there.

Thank you!

Upvotes: 2

Views: 1161

Answers (3)

swift_dan
swift_dan

Reputation: 2648

Adeel's code worked for me, with a slight improvement:

var disalert: Bool = 

NSUserDefaults.standardUserDefaults().boolForKey("disalert");

if disalert {
// The alert has already been shown so no need to show it again

}

else

{
// The alert hasn't been shown yet. Show it now and save in the userDefaults
// After showing the alert write this line of code

NSUserDefaults.standardUserDefaults.setBool(true, forKey: "disalert")

}

NSUserDefaults cried for the following: NSUserDefaults.standardUserDefaults()

Upvotes: -1

Adeel Miraj
Adeel Miraj

Reputation: 2496

Before showing the alert, wherever you want to show it, check the value against the "disalert" key in your userDefaults with this statement:

var disalert: Bool = NSUserDefaults.standardUserDefaults.boolForKey("disalert");

if disalert {
// The alert has already been shown so no need to show it again

}

else

{
// The alert hasn't been shown yet. Show it now and save in the userDefaults
// After showing the alert write this line of code

NSUserDefaults.standardUserDefaults.setBool(true, forKey: "disalert")

}

Upvotes: 1

Mike
Mike

Reputation: 251

If I am reading your question properly, my suggestion would be to user NSUserDefaults to save a key when the user first opens the view. Then just use an IF statement to decide whether an alertView should be displayed.

Upvotes: 3

Related Questions