2012-07-05 6 views
1

Я посмотрел и посмотрел и искал это, и когда я наконец нашел что-то, это не сработало. Я пытаюсь сохранить и загрузить цвет текста, который пользователь выбирает. Вот моя кнопка сохранить:Сохраните и загрузите цвет текста

-(IBAction)save123456 { 
    NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:textview]; 
    [[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"]; 
} 

А вот моя нагрузка:

-(IBAction)load123456 { 
    NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"]; 
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 
} 

мой взгляд текст TextView, если это помогает. Также я связываю все через tuchupinside, поэтому дайте мне знать, если я должен что-то изменить.

Также, если кто-либо знает, как сохранить шрифт текста, который выбирает пользователь, также будет полезно. Спасибо!!

ответ

0

Ну, вы можете сохранить RGB цвета. И шрифт-имя шрифта. Итак, когда вы сохраняете, сохраните эти значения для шрифта: font.fontName, font.pointSize и RGB цвета. Here вы можете увидеть, как получить RGB объекта UIColor. Это все значения NSString и float, поэтому у вас не должно возникнуть никаких проблем при их сохранении.

- (NSString *) pahtForFile:(NSString*) filename 
{ 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
return [documentsDirectory stringByAppendingPathComponent:filename]; 
} 


- (void) save 
{ 
//get RGB and fontName , fontSize like I explained above 

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
[dictionary setObject:fontName forKey:@"fontName"]; 
[dictionary setObject:[NSNumber numberWithFloat:fontSize] forKey:@"fontSize"]; 
[dictionary setObject:[NSNumber numberWithFloat:red] forKey:@"red"]; 
[dictionary setObject:[NSNumber numberWithFloat:green] forKey:@"green"]; 
[dictionary setObject:[NSNumber numberWithFloat:blue] forKey:@"blue"]; 

NSString *filepath = [self pathForFile:@"save.plist"]; 
[dictionary writeToFile:filepath atomically:TRUE]; 
} 

- (void) load 
{ 
float red,green,blue,fontSize; 
NSString *fontName; 

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:[self pahtForFile:@"save.plist"]]; 
red = [[dictionary objectForKey:@"red"] floatValue]; 
green = [[dictionary objectForKey:@"green"] floatValue]; 
blue = [[dictionary objectForKey:@"blue"] floatValue]; 

fontSize = [[dictionary objectForKey:@"fontSize"] floatValue]; 
fontName = [dictionary objectForKey:@"fontName"]; 

//now rebuild color and font like this: 
UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1]; 
UIFont *font = [UIFont fontWithName:fontName size:fontSize]; 
} 

Надеюсь, это поможет. BTW: Если вы найдете ответ полезным, отметьте его как правильно.

Приветствия,

Джордж

+0

Хорошо спасибо тааак много. Я действительно новичок в Xcode, и я понятия не имею, что я делаю. Вы думаете, что в любом случае вы можете придумать демо-код? Это очень помогло бы. Спасибо – Nicholas

+0

См. Мой отредактированный ответ. Это сохранит ваши значения в файле. Преимущество для новичков в iOS заключается в том, что вы можете запустить приложение на симуляторе и проверить фактический файл, чтобы узнать, правильно ли он сохранил информацию. Чтобы указать путь к файлу, просто запишите, что возвращает 'pathForFile'. – George

+0

Хорошо выглядит хорошо, есть только несколько проблем. За исключением того, что словарь в сохранении в NSMUltiableDictionary имеет ошибки. Они все говорят, что использование Undeclared Identifier ... Fontname или другие цвета. Также NSString в save. Эта ошибка не видна @interface объявляет селектор «pathForFile» – Nicholas

Смежные вопросы