2015-05-19 19 views
16

Mam do czynienia z problemem z ustawieniami aplikacji, używam zestawu ustawień do wyboru środowiska, ale po wybraniu i powrocie do ustawień aplikacji ponownie wyświetla się domyślny jako wybrane.Pakiet ustawień ios 8.2 i nowszych nie pokazuje wybranego elementu, ale domyślny

Obserwuje się to tylko z wersji 8.2 i nowszej (urządzenie i symulator). Mój pakiet ustawień plist wygląda tak, jak poniżej.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PreferenceSpecifiers</key> 
    <array> 
     <dict> 
      <key>DefaultValue</key> 
      <string>1</string> 
      <key>Key</key> 
      <string>Environment</string> 
      <key>Title</key> 
      <string>Environment</string> 
      <key>Titles</key> 
      <array> 
       <string>Live</string> 
       <string>Stage</string> 
      </array> 
      <key>Type</key> 
      <string>PSRadioGroupSpecifier</string> 
      <key>Values</key> 
      <array> 
       <string>0</string> 
       <string>1</string> 
      </array> 
     </dict> 
    </array> 
    <key>StringsTable</key> 
    <string>Root</string> 
</dict> 
</plist> 

już zobaczyć kilka informacji na przepełnienie stosu, że jest to błąd, istniejący od Apple, mam nadzieję, że jeśli ktoś ma jakieś żadnej aktualizacji na niego.

+0

mogą być te mogłyby pomóc - 1. http://stackoverflow.com/questions/29163955/ios-8-2-settings-bundle-default-value 2. http://stackoverflow.com/questions/29155410/ios-8-2-nsuserdefaults-standarduserdefaults-returning-nil?rq=1 3.http: //stackoverflow.com/questions/14077431/register-default-settings- from-the-settings-bundle-plist-file? rq = 1 4.http: //www.codedisqus.com/0SNjqXVqee/ios-settingsbundle-localization-difficulties.html –

+2

Napotkałem to samo, ale tylko przy użyciu PSRadioGroupSpecifier , a także element grupy radiowej, jak Apple nazywa go tutaj: https://developer.apple.com/library/ios/documentation/PreferenceSettings/Conceptual/SettingsApplicationSchemaReference/Articles/RadioGroupElement.html Ponieważ edytor plist XCode nie rozpoznaje tego typu, myślę, że Apple nie wdrożyło tego całkowicie. Użyłem więc elementu wielowartościowego (PSMultiValueSpecifier), który jest w zasadzie tym samym, z wyjątkiem wartości na osobnym ekranie. – Wizfinger

Odpowiedz

1

Jeśli ustawienia wyglądem są ustawione podczas startu, trzeba przeładować viewcontrollers aplikacji, aby wyświetlić zmiany, więc można dodać do appDelegate coś takiego:

NSString *type w swoim Ivars

następnie

type = [[NSUserDefaults standardUserDefault] objectForKey:@"Your key"]; 

w swojej metodzie didFinishLaunchingWithOptions:

i wreszcie w swoją didEnterForeground metoda, dodać

if(![[[NSUserDefaults standardUserDefault] objectForKey:@"Your key"] isEqualToString:type]){ 
    //Reload your main view controller 
    [self.window.rootViewController viewDidLoad]; 
    [self.window.rootViewController viewWillAppear:YES]; 
}