Nell'interesse di mantenere questa domanda aggiornato, ecco una versione Swift della risposta accettata.
FASE 1
Nella tua App Delegato, aggiungere la seguente funzione.
func applicationDidFinishLaunching(application: UIApplication) {
if !NSUserDefaults.standardUserDefaults().boolForKey("TermsAccepted") {
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "TermsAccepted")
}
}
Ciò essenzialmente impostato il tuo TermsAccepted Bool a false se questo è il primo lancio (come Bools sono falsa di default).
FASE 2
Nel vostro controller della vista root (controller della vista che carica al momento del lancio la vostra applicazione), è necessario disporre di un modo per vedere se sono stati accettati i termini o no e agire di conseguenza.
Aggiungere la seguente funzione.
override func viewDidAppear(animated: Bool) {
if NSUserDefaults.standardUserDefaults().boolForKey("TermsAccepted") {
// Terms have been accepted, proceed as normal
} else {
// Terms have not been accepted. Show terms (perhaps using performSegueWithIdentifier)
}
}
FASE 3
Una volta che l'utente accetta le vostre condizioni, si vuole cambiare il vostro TermsAccepted Bool per vero. Quindi nel corpo del metodo che gestisce l'accettazione dei termini, aggiungere la seguente riga.
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "TermsAccepted")
Spero che questo aiuta!
Loic
fonte
2015-07-13 15:02:37
Ok, grazie. Puoi approfondire come ottenere l'app per "procedere normalmente" rispetto a "mostrare i termini"? – jac300
Questo dipende da voi. Ad esempio, la prima volta che l'utente avvia l'app, viene visualizzato viewController (o solo la vista, se si utilizza un singolo VC) che visualizza i termini. Quando i termini sono accettati, lo chiudi e vai al secondo come hai detto. Questo può essere fatto dal root VC come spiegato da alexandresoli. La prossima volta che verrà l'utente, il VC radice mostrerà immediatamente il secondo VC. – NightCoder
Grazie. Sì, capisco il concetto, ma non riesco a capire il codice. Quindi diciamo che i termini sono stati accettati ... come faccio a costruire un codice che dice al programma di "saltare la vista dei termini attuali e andare al prossimo"? In altre parole, guardando il pezzo di codice di alexandresoli: [self presentViewViewer: YOUR_TERMS_CONTROLLER animato: SÌ completamento: nil]; che cos'è "YOUR_TERMS_CONTROLLER", come faccio ad etichettare un controller di visualizzazione e a farvi riferimento in modo programmatico? – jac300