首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIColor函数崩溃

UIColor函数崩溃
EN

Stack Overflow用户
提问于 2010-03-07 22:05:39
回答 1查看 924关注 0票数 0

好的,我有一个要应用主题的UITableView。我想我已经知道怎么做了。我所做的是,当我的视图加载时,我调用一个名为"self getValues“的函数。下面是它的外观:

代码语言:javascript
复制
 - (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的输出。下面是该函数:

代码语言:javascript
复制
 - (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“,要么是其他变量,所以这不是问题所在。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-07 22:31:47

不如这样吧:

代码语言:javascript
复制
- (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,并且只初始化它一次。否则我就不会费心了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2396495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档