Сбой при рисовании представления заголовка раздела пользовательского табличного представления - PullRequest
0 голосов
/ 09 ноября 2011

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

Что может быть причиной этого: - (?

Журнал сбоя говорит:

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 10]'
    *** Call stack at first throw:
0   CoreFoundation                      0x3611a64f __exceptionPreprocess + 114
        1   libobjc.A.dylib                     0x30638c5d objc_exception_throw + 24
        2   CoreFoundation                      0x3611a491 +[NSException raise:format:arguments:] + 68
        3   CoreFoundation                      0x3611a4cb +[NSException raise:format:] + 34
        4   QuartzCore                          0x30fd061d _ZL18CALayerSetPositionP7CALayerRKN2CA4Vec2IdEEb + 140
        5   QuartzCore                          0x30fd058b -[CALayer setPosition:] + 38
        6   QuartzCore                          0x30fd04d7 -[CALayer setFrame:] + 390
        7   UIKit                               0x32e1f455 -[UIView(Geometry) setFrame:] + 188
        8   UIKit                               0x32e200fb -[UILabel setFrame:] + 210
        9   MyApp                        0x003d4ed3 -[MyCustomView layoutSubviews] + 210

Вот код для моих подпредставлений макета:

- (void)layoutSubviews {
    [super layoutSubviews];
    CGFloat anEdgePadding = 28.0f;
    CGFloat aTitleLabelWidth = [self.titleLabel.text sizeWithFont:[UIFont boldSystemFontOfSize:kFontSize16]].width; 
    CGFloat aSubTitleLabelWidth = [self.subTitleLabel.text sizeWithFont:[UIFont boldSystemFontOfSize:kFontSize10]].width;
    self.titleLabel.frame = CGRectMake(myLeftRightMargin, -1, aTitleLabelWidth, self.bounds.size.height);
    self.subTitleLabel.frame = CGRectMake(self.bounds.size.width - aSubTitleLabelWidth - anEdgePadding, 0, aSubTitleLabelWidth, self.bounds.size.height);
}

Спасибо, Абхинав

1 Ответ

1 голос
/ 09 ноября 2011

Как говорится в сообщении об ошибке, одна из ваших меток задает исходную позицию x или y для чего-то, что не является числом (NaN).

Вы можете узнать какой, положив:

NSLog(@"TitleLabel: %p", self.titleLabel);
NSLog(@"subTitleLabel: %p", self.subTitleLabel);

Затем сравните значения указателя (0x32e200fb) с журналом сбоев. Тот, который соответствует, получает плохую ценность.

Вкратце, titleLabel использует константу (myLeftRightMargin), поэтому я сразу же посмотрю на нее. Вы удостоверились, что это определено как числовое первичное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...