textTitleAttributesForState имеет значение Null, пока не установлено, не кодирует? - PullRequest
2 голосов
/ 04 ноября 2011

В следующем коде я ожидаю, что titleTextAttributesForState: вернет текстовые атрибуты по умолчанию после создания UISegmentedControl,

    simpleButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"My Button"]];
    simpleButton.segmentedControlStyle = UISegmentedControlStyleBar;
    simpleButton.momentary = YES;
    simpleButton.tintColor = [UIColor blueColor];
    NSLog(@"%@ - %@ - titleTextAttributesForState: %@", INTERFACENAME, NSStringFromSelector(_cmd) , [simpleButton titleTextAttributesForState:UIControlStateNormal]);

    [simpleButton setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIFont boldSystemFontOfSize:12.0f], UITextAttributeFont, 

      nil] 
                                forState:UIControlStateNormal]; 

    NSLog(@"%@ - %@ - titleTextAttributesForState: %@", INTERFACENAME, NSStringFromSelector(_cmd) , [simpleButton titleTextAttributesForState:UIControlStateNormal]);

Хотя, как вы можете видеть из вывода NSLog, это не так.

2011-11-03 17:28:45.492 io[80933:11903] IoUISESimpleButton - createElement - titleTextAttributesForState: (null)
2011-11-03 17:28:49.368 io[80933:11903] IoUISESimpleButton - createElement -     titleTextAttributesForState: {
Font = "<UICFFont: 0x99c2040> font-family: \"Helvetica\"; font-weight: bold; font-style: normal; font-size: 12px";}

Я что-то упустил? Также он не кодирует атрибуты.

у меня в моем - (void) encodeWithCoder:(NSCoder *)encoder

    [encoder encodeObject:simpleButton     forKey:@"simpleButton" ];

тогда по моему -(id) initWithCoder:(NSCoder *)decoder

    simpleButton = [decoder decodeObjectForKey:@"simpleButton"];

Это не сохраняет setTitleTextAttributes: forState:, который я установил. (изменить шрифт, размер и цвет)

В итоге мне нужно добавить:

[encoder encodeObject:[simpleButton titleTextAttributesForState:UIControlStateNormal]     forKey:@"simpleButtonTitleTextAttributes" ];

и

    [simpleButton setTitleTextAttributes:[decoder decodeObjectForKey:@"simpleButtonTitleTextAttributes"] forState:UIControlStateNormal];

для сохраняемых атрибутов текста.

Спасибо

...