2017-03-28 1 views
0

In meiner App verwende ich zwei Sprachen Englisch und Arabisch. Wenn ich meine Sprache von einer auf die andere ändere, funktioniert die Swipe-Back-Navigation wie meine vorherige Sprache.Swipe zur Navigation zurück, funktioniert nicht für Lokalisierungs-App

ZB: Englisch streichen von links nach rechts, Arabisch wischen von rechts nach links. Aber in meinem Fall knallte Englisch von rechts nach links, Arabisch knallte von links nach rechts. Dies geschieht zum ersten Mal beim Start der App nach dem Ändern der Sprache. Für das nächste Mal funktioniert es gut.

Nach dem Ändern der Sprache muss der Benutzer die App neu starten. Ich benutze diesen Code unten die Sprache einzustellen,

In main.m

 if ([languageSelected isEqualToString:@"en_US"]) { 
      NSArray* languages = [NSArray arrayWithObjects:@"en", nil]; 
      [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; 
     } else if ([languageSelected isEqualToString:@"ar"]) {     
      NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; 
      [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; 
     } 

Könnte jemand einen Vorschlag machen? Vielen Dank im Voraus !!

+0

Ich denke, es ist etwas mit der Einstellung der rootviewcontroller mit Navigation Controller zu tun. – Poles

+0

Könnten Sie bitte kurz erklären? –

+0

Ich denke, Ihre Viewcontroller ist nicht mit einem Navigationscontroller zum Zeitpunkt des Starts eingebettet, das ist warum Swipe to Back Navigation funktioniert nicht für Sie. – Poles

Antwort

0

ich die Lösung gefunden, müssen wir die Sprache zum Zeitpunkt der App wie jemand Gebrauch davon erhalten unter

- (void)applicationWillTerminate:(UIApplication *)application { 
     if ([languageSelected isEqualToString:@"en_US"]) { 
      LocalizationSetLanguage(@"en"); 
      NSArray* languages = [NSArray arrayWithObjects:@"en", nil]; 
      [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight]; 
     } else if ([languageSelected isEqualToString:@"ar"]) { 
      LocalizationSetLanguage(@"ar"); 
      NSArray* languages = [NSArray arrayWithObjects:@"ar", nil]; 
      [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
      [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft]; 
     } 
} 

Hoffnung endet einzustellen.

+0

Gute Arbeit. Aber wie steuert dieser Code die Navigation? Ich frage nur ... – Poles

+0

Bevor ich die Sprache in main.m einstellt habe keine Auswirkung auf die Navigation, mag es etwas dauern. Also habe ich es zum Zeitpunkt der Kündigung gemacht. –

Verwandte Themen