UIColor函数崩溃

时间:2010-03-07 14:05:39

标签: iphone iphone-sdk-3.0 uitableview crash uicolor

好的,我有一个UITableView,我想将主题应用到。我想我已经弄明白了怎么做。我所做的是当我的视图加载时,我调用一个名为“[self getValues]”的函数。以下是它的外观:

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

fileName和textColor变量在标题中定义为NSString和UIColor。 fileName用于获取我分配给单元格的背景图像的文件名。我将“textColor”分配给函数[self getTextColor]的输出。这是函数:

 - (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;
}

但由于一些奇怪的原因,上面的函数崩溃了。我确信函数中有一些东西导致崩溃,因为当我删除我调用函数的行时应用程序正常工作。我已经使用NSLog来查看我的应用程序为主题变量获取的内容,它是“1Theme”或其他,所以这不是问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

相反如何:

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

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

颜色存储在字典中,因此您只需按名称进行查找即可。如果您经常调用此方法,那么您还可以考虑制作themeColors变量static并仅将其初始化一次。否则我不会打扰。