Когда мое табличное представление пусто, я хочу добавить простую метку в нижний колонтитул табличного представления, чтобы отобразить сообщение «нет содержимого». Он работал нормально, когда я устанавливал кадры UILabel и UIView, которые я использовал для нижнего колонтитула, но теперь я пытаюсь преобразовать его в использование автоматического макета, и я не могу заставить его работать.
Вот что я делаю:
// Create the footer
UIView *tempFooter = [[UIView alloc] init];
UILabel *atext = [[UILabel alloc] init];
tempFooter.translatesAutoresizingMaskIntoConstraints = NO;
atext.translatesAutoresizingMaskIntoConstraints = NO;
atext.numberOfLines = 0;
[atext setText:@"Add Some Text"];
atext.textAlignment = NSTextAlignmentCenter;
atext.font = [UIFont italicSystemFontOfSize:14];
atext.textColor = [UIColor grayColor];
atext.backgroundColor = [UIColor clearColor];
atext.lineBreakMode = NSLineBreakByWordWrapping;
// add label to footer view, and add constraints
[tempFooter addSubview:atext];
NSLayoutConstraint *tvatt1 = [NSLayoutConstraint constraintWithItem:tempFooter
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:atext attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:10.0];
NSLayoutConstraint *tvatt2 = [NSLayoutConstraint constraintWithItem:tempFooter
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:atext
attribute:NSLayoutAttributeRight
multiplier:1.0
constant:10.0];
NSLayoutConstraint *tvatt3 = [NSLayoutConstraint constraintWithItem:tempFooter
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:atext
attribute:NSLayoutAttributeTop
multiplier:5.0
constant:0];
NSLayoutConstraint *tvatt4 = [NSLayoutConstraint constraintWithItem:tempFooter
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:atext
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant: 0];
[tempFooter addConstraints: @[tvatt1, tvatt2, tvatt3, tvatt4]];
// set the footerview
self.tview.tableFooterView = tempFooter;
Когда я запускаю это, я получаю сбой:
08.09.2014 19:57:16.594 SimpleList[49442:60b] * Ошибка утверждения в -[UITableView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8794 08.09.2014 19 :57:21.073 SimpleList[49442:60b] * Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «После выполнения -layoutSubviews все еще требуется автоматическая компоновка. Реализация UITableView -layoutSubviews должна вызывать super
Я не уверен, что я делаю неправильно. Я также пытался установить ограничения для self.tview.tableFooterView
по отношению к tempFooter
(закрепление со всех 4 сторон), но это не меняет сбой. Я также звоню:
[self.tview.tableFooterView layoutSubviews];
но и это не помогает.
Любые идеи, что я делаю неправильно?