2014-09-22 3 views
1

У меня есть пользовательский UIView, который я хочу, чтобы иметь возможность повторного использования в моем приложении в качестве заголовка раздела в табличных представлениях. Здесь применяется код, который (это в основном все это делает):Все заголовки разделов в uitableview находятся в том же месте

-(id) initWithTitle:(NSString *)title{ 
    self = [super init]; 
    if(self){ 
     _title = title; 
     self.translatesAutoresizingMaskIntoConstraints = false; 
     [self addSubview:self.titleLabel]; 
     [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"H:|-%@-[_titleLabel]-%@-|", HORIZONTAL_SPACE, HORIZONTAL_SPACE] options:0 metrics:nil views:NSDictionaryOfVariableBindings(self, _titleLabel)]]; 
     [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:[NSString stringWithFormat:@"V:|-%@-[_titleLabel]-%@-|", VERTICAL_SPACE, VERTICAL_SPACE] options:0 metrics:nil views:NSDictionaryOfVariableBindings(self, _titleLabel)]]; 
     [self updateConstraintsIfNeeded]; 
    } 
    return self; 
} 

Я использую это так:

- (UIView*)tableView:(UITableView*)tableView 
viewForHeaderInSection:(NSInteger)section 
{ 
    NSString *headerText = _headers[section]; 
    if(headerText.length){ 
     AWSmallTextSectionHeader *header = [[AWSmallTextSectionHeader alloc] initWithTitle:headerText]; 
     return header; 
    } 
    return [UIView new]; 
} 

Проблема заключается в том, что когда взгляды обратить на экран они все начинаются с того же происхождения ... Это то, что выглядит как на верхней части Tableview:

overlapping section headers

Это действительно странно, хотя, потому что он действует как если он находится в правильном разделе, например, если вы начнете прокрутку и один из разделов перейдет в режим просмотра, вид, соответствующий заголовку этого раздела, исчезнет.

У меня такое чувство, что оно связано с тем, как я добавляю свои ограничения, но я не уверен.

Благодаря

Редактировать (это также реализовано)

- (CGFloat)tableView:(UITableView*)tableView 
    heightForHeaderInSection:(NSInteger)section 
{ 
    if (section == SECTION_INDEX_PHONE) { 
     return 60.f; //CGRectGetHeight(self.phoneSectionHeader.frame); 
    } else if (section == SECTION_INDEX_FEEDBACK) { 
     return 40.f; //CGRectGetHeight(self.feedbackSectionHeader.frame); 
    } 
return 5.0; 
} 

ответ

1

self.translatesAutoresizingMaskIntoConstraints = false; была проблема.

Как только я избавился от этого, он работал правильно.

1

Если вы в какой-то момент установить границы для разреза заголовка?

Также убедитесь, что вы адаптируя heightForHeaderInSection:

This method only works correctly when tableView:heightForHeaderInSection: is also implemented. 
+1

как ширина/высота ограничений? – dostrander

+1

или Bounds напрямую? – dostrander

+1

Возможно. Я буду честен, макет в VFL для меня греческий, но в какой-то момент этот взгляд должен знать, насколько он высок и широк. Прямо сейчас _titleLabel имеет ограничения H и V, но нечего сказать, что это должна быть определенная высота или ширина. и ширины. –

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