Pasar datos a través de ViewControllers – Hacer página de configuration

Así que llevo un time teniendo este problema y si alguien me puede llevar al path correcto, lo agradecería mucho. Básicamente estoy haciendo una aplicación pero con un button de configuration. Cada vez que habilito mi SegmentedControl o UISWITCH, y vuelvo a eso, vuelve a su valor pnetworkingeterminado. También quiero tener un control Segmentado para cambiar el color. He configurado los colors pero toda la información que quiero cambiar está en el controller de vista n. ° 1. Básicamente, ¿cómo hago una página de configuration para save los cambios? aquí está mi código.

- (IBAction)colorController:(id)sender { if (Controller.selectedSegmentIndex == 0) { //App title text color appTitle.textColor = [UIColor colorWithRed:1.00 green:1.00 blue:0.00 alpha:1.0]; //Background color when selected Controller.tintColor = [UIColor colorWithRed:1.00 green:1.00 blue:0.00 alpha:1.0]; //The font of the selected NSDictionary *fontColor = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor],NSForegroundColorAttributeName, nil]; [Controller setTitleTextAttributes:fontColor forState:UIControlStateSelected]; } if (Controller.selectedSegmentIndex == 1) { //App title text color appTitle.textColor = [UIColor colorWithRed:0.00 green:0.66 blue:1.00 alpha:1.0]; //Background color when selected Controller.tintColor = [UIColor colorWithRed:0.00 green:0.66 blue:1.00 alpha:1.0]; //The font of the selected NSDictionary *fontColor = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor],NSForegroundColorAttributeName, nil]; [Controller setTitleTextAttributes:fontColor forState:UIControlStateSelected]; } if (Controller.selectedSegmentIndex == 2) { //App title text color appTitle.textColor = [UIColor colorWithRed:0.98 green:0.22 blue:0.22 alpha:1.0]; //Background color when selected Controller.tintColor = [UIColor colorWithRed:0.98 green:0.22 blue:0.22 alpha:1.0]; //The font of the selected NSDictionary *fontColor = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor],NSForegroundColorAttributeName, nil]; [Controller setTitleTextAttributes:fontColor forState:UIControlStateSelected]; } if (Controller.selectedSegmentIndex == 3) { //App title text color appTitle.textColor = [UIColor colorWithRed:0.15 green:0.82 blue:0.44 alpha:1.0]; //Background color when selected Controller.tintColor = [UIColor colorWithRed:0.15 green:0.82 blue:0.44 alpha:1.0]; //The font of the selected NSDictionary *fontColor = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil]; [Controller setTitleTextAttributes:fontColor forState:UIControlStateSelected]; } 

}

Ahora, como puede ver, "appTitle" está en el primer controller de vista, por lo que automáticamente no funciona. Cómo puedo arreglar esto. por favor, enlace a algún lugar / muéstrame de una manera no complicada. (También tendré muchas tags)

Para este propósito, suelo usar una estructura declarada en el nivel de file (no está anidada en ningún tipo de class). Por lo tanto, debería estar accesible en toda la aplicación. Establezca el valor cuando cambie el segmento seleccionado; obtenga el valor cuando cargue el controller de vista. Aquí hay un ejemplo en Swift:

 struct setStruct { var selSeg: Int = 0 } var settings = setStruct() 

En las configuraciones Ver la vista del Controlador de CargaDe:

 Controller.selectedSegmentIndex = settings.selSeg 

En la IBAction para el control segmentado:

 settings.selSeg = Controller.selectedSegmentIndex 

Si desea hacer una página de "configuration", le sugiero que lea en NSUserDefaults . Lo que podría hacer es crear valores pnetworkingeterminados en didFinishLaunchingWithOptions de AppDelegate.m .

He aquí un ejemplo:

AppDelegate.m

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // this is a method I created to check if there are default values set already [self checkUserDefaults]; return YES; } #pragma mark - Initial defaults - (void)checkUserDefaults { NSUserDefaults *defaults= [NSUserDefaults standardUserDefaults]; // If there's a default value for a key, then don't do anything if([[[defaults dictionaryRepresentation] allKeys] containsObject:@"defaultTime"]){ NSLog(@"User Defaults are ALREADY set"); } else { // Otherwise, create a default value for it // ** Set initial userDefaults ** [[NSUserDefaults standardUserDefaults]setInteger:15 forKey:@"defaultTime"]; NSLog(@"User Defaults have been initially set"); } } 

En Interface Builder, puede crear un storyboard TableViewController y crear el contenido tableView Static Cells. Puede crear secciones para las celdas en la pestaña Inspector de attributes en Interface Builder. Luego podría arrastrar tags, conmutadores, etc. y conectarlos a una class PreferencesTableViewController que necesitaría crear.

Básicamente, crea un valor pnetworkingeterminado que persiste entre los lanzamientos con esto:

 [[NSUserDefaults standardUserDefaults]setInteger:15 forKey:@"defaultTime"] 

y lo llamas así:

 [[NSUserDefaults standardUserDefaults]valueForKey:@"defaultTime"] 

Puede establecer valores pnetworkingeterminados para muchas cosas, como verá en la documentation de Apple

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/UserDefaults/AccessingPreferenceValues/AccessingPreferenceValues.html

Aquí hay una publicación que trata sobre UIColor s, que parece ser en lo que estás principalmente centrado.

Guardar UIColor en y cargar desde NSUserDefaults