質問

さて、私は私がテーマを適用することのUITableViewを持っているので。私はそれを行う方法を考え出したと思います。私の見解の負荷が、私は「[自己に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が、私はセルに割り当てる背景画像のファイル名を取得するために使用されています。私は、関数の出力[自己getTextColor]に「の、textColor」を割り当てます。ここではその機能があります:

 - (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」等のいずれかです。

任意のアイデア?

役に立ちましたか?

解決

どのように代わりにこのことについてます:

- (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を作成し、一度だけ、それを初期化するために考えることができます。そうでなければ、私は気にしないでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top