0

私はSOを調べましたが、自分に合った答えが見つからないので、次のようにします。

ユーザーの好みに基づいて、色、フォント、サイズの要素を設定しようとしています。フォントやフォントサイズに問題はありませんが、色がうまくいかないようです。

これは私がしていることです:

  1. 次のような定数のグループがあります。

    アスタリスクdefinekBlackColor@ "[UIColor blackColor]"

  2. prefsファイルを読んで、blackColorが必要だと判断し、

    txtColor = kBlackColor;

txtColorは次のように定義されます。

NSString *txtColor;
  1. txtColorを使用したいときは、次のように書いています。

    cell.textLabel.textColor =(UIColor *)txtColor;

これはコンパイルされますが、「認識されないセレクターが送信されました」というメッセージが表示されます。

私はこれについて行く正しい方法を知っていただければ幸いです。

4

2 に答える 2

1

txtColor格納すると、文字列が格納されます (objective-c のように見えるという事実を忘れて、文字列として格納し、一度文字列として格納すると、コンパイラはそれをどのように利用できるでしょうか?)、文字列を にキャストする方法はありませんUIColor。どうしてあり得ますか?

色を保存するには、色をNSUserDefaultsとしてシリアル化する必要がありますNSData

以前の回答から借りるには:

色の保存:

NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"];

色の取得:

NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
于 2011-12-13T04:56:15.563 に答える
0

私は別の方法で問題に取り組むことにしたので、自分の質問に答える必要があります-それが誰かの助けになることを願っています.

ユーザーが各設定を変更できるようにする代わりに、一連のスタイル (0 ~ 5) を作成し、(とりわけ) plist に保存しました。

各スタイルには一連の変数 (フォント名、サイズ、色など) があります。

設定ファイルは、以下に示すように変数を使用し、アプリの起動時に読み込まれます。

AppDelegate *mainDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
styleKeyValue = [mainDelegate styleValueKey];   

styleKey = [styleKeyValue intValue];

switch (styleKey) {

        case 0:
            fontName = @"Arial"; 
            fontSize = 16;
            selectedTintColor = [UIColor blackColor];
            selectedFontColor = [UIColor blackColor];
            backgroundImage = @"background0.png";
            break;


        case 1:
            fontName = @"Times"; 
            fontSize = 14;
            selectedTintColor = [UIColor blueColor];
            selectedFontColor = [UIColor blackColor];
            backgroundImage = @"background1.png";
            break;

        case 5:
            ...


    }

selectedTintColor と selectedFontColor は次のように定義されます。

UIColor *selectedTintColor;
UIColor *selectedFontColor;

fontName と backgroundImage は NSStrings として定義されています。フォント サイズはローカル整数です。

セルをスタイルしたいときは、これを入力するだけです:

cell.textLabel.font = [UIFont fontWithName:fontName size:fontSize];
cell.textLabel.textColor = selectedFontColor;

(tintColor は、segmentedCells のスタイル設定に使用されます。)

繰り返しますが、これが誰かに役立つことを願っています。このかなり単純な解決策にたどり着くのに一晩中かかりました..

于 2011-12-13T14:50:52.590 に答える