2014-07-19 25 views
6

Se eseguo l'override/alterazione dei AppleLanguages ​​in NSUserDefaults, iOS non aggiorna l'elenco più quando la lingua del sistema viene modificata. Se lascio la lista invariata, il primo oggetto nella matrice sarà sempre la lingua di sistema, tuttavia, se inserisco un nuovo oggetto all'indice 0 e successivamente cambi la lingua di sistema, iOS non metterà la nuova lingua sulla parte superiore di la lista più. C'è un modo per modificare AppleLanguages ​​in NSUserDefaults e mantenere il sistema aggiornato l'elenco quando cambia la lingua del sistema?Override AppleLanguages ​​in NSUserDefaults

La soluzione da Accatyyc eccellenti opere, ecco la soluzione se si utilizza Swift:

  1. Creare un file main.swift, aggiungere la versione Swift del codice nella risposta accettata:

    NSUserDefaults.standardUserDefaults().removeObjectForKey("AppleLanguages") 
    UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate)) 
    
  2. Vai alla AppDelegate e rimuovere la seguente riga:

    @UIApplicationMain //Removing this tells Xcode to use your main.swift file 
    
+0

Ho lo stesso problema, hai trovato qualche soluzione per questo? – Accatyyc

risposta

4

Ho trovato una soluzione dopo alcuni tentativi ed errori! La rimozione dell'intera chiave AppleLanguages ​​sembra ripristinarla a ciò che l'utente ha impostato nell'applicazione delle impostazioni:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"]; 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
}