Pregunta

Bien, así que tengo un UITableView que quiero aplicar temas para.Creo que he encontrado la manera de hacerlo.Yo lo que hago es cuando mi vista se carga, me llama a una función llamada "[auto getValues]".Aquí es cómo se ve:

 - (void)getValues {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *theme = [defaults valueForKey:@"theme"];
    fileName = [NSString stringWithFormat:@"%@.png", theme];
    textColor = [self getTextColor];
}

El nombre de archivo y textColor las variables se definen en la cabecera, como un NSString y UIColor.nombre de archivo se utiliza para obtener el nombre de archivo de la imagen de fondo me asignar a las células.Puedo asignar "textColor" a la salida de la función [auto getTextColor].Aquí es que la función:

 - (UIColor*)getTextColor {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *theme = [defaults valueForKey:@"theme"];

    NSArray *themes = [NSArray arrayWithObjects:@"Crash Love", @"DECEMBERUNDERGROUND", @"Sing the Sorrow", nil];
    NSArray *textColors = [NSArray arrayWithObjects:gold, [UIColor blackColor], [UIColor whiteColor], nil];

    int r;
    UIColor *clr;

    for (NSString *element in themes) {
        r += 1;

        if ([element isEqualToString:theme]) {
            clr = [textColors objectAtIndex:r];
            break;
        }
    }

    return clr;
}

Pero por alguna extraña razón, la función por encima de los accidentes.Estoy seguro de que hay algo en la función que está causando el bloqueo, ya que la aplicación funciona bien, cuando voy a borrar la línea donde debo llamar a la función.He usado NSLog para ver lo que mi aplicación está recibiendo por el tema de la variable, y es "1Theme" o a los demás, así que ese no es el problema.

Alguna idea?

¿Fue útil?

Solución

Cómo acerca de este lugar:

- (UIColor*) getTextColor
{
    NSDictionary* themeColors = [NSDictionary dictionaryWithObjectsAndKeys:
        [UIColor redColor], @"Theme1",
        [UIColor blackColor], @"Theme2",
        [UIColor whiteCOlor], @"Theme3",
        nil];

    return [themeColors objectForKey: [[NSUserDefaults standardUserDefaults] valueForKey:@"theme"]];
}

Los colores son almacenados en un diccionario, de modo que usted puede simplemente hacer una búsqueda por nombre.Si se llama a esta realidad, a menudo, a continuación, también se puede considerar para hacer el themeColors variable static e inicializar una sola vez.De lo contrario no sería molestar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top