2012-04-16 6 views
1

Я добавил этот код в свой UITableViewController для возврата серых разделов заголовка.Заголовок заголовка UITableview, не отображающий текст

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)]; 
    [headerView setBackgroundColor:[UIColor grayColor]]; 
    return headerView; 
} 

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

У меня есть эти методы, добавляющие заголовки и текст заголовка в UITablView, но когда я использую описанный выше метод, я больше не вижу их.

// Section headers 
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{  
    return [sectionLetterArray objectAtIndex:section]; 
} 

// Section header titles 
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{ 
    return sectionLetterArray; 
} 

ответ

6

Если вы создаете свой собственный tableView:viewForHeaderInSection, вы должны создать UILabel или любой другой, и заполнить в тексте самостоятельно, например:

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)]; 
    [headerView setBackgroundColor:[UIColor grayColor]]; 

    // Add the label 
    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(kSectionTitleLeftMargin, 
                    kSectionTitleTopMargin, 
                    tableView.bounds.size.width - kSectionTitleLeftMargin - kSectionTitleRightMargin, 
                    30.0 - kSectionTitleTopMargin - kSectionTitleBottomMargin)]; 

    // do whatever headerLabel configuration you want here 

    headerLabel.text = [self tableView:tableView titleForHeaderInSection:section]; 
    [headerView addSubview:headerLabel]; 

    // Return the headerView 
    return headerView; 
} 

Очевидно, что изменить headerLabel быть установлен в любом случае вы хотите, но ключевое сообщение «взять домой» состоит в том, что если вы создаете свой собственный вид, вам нужно создать ярлык и заполнить текст самостоятельно.

+0

Это правильный ответ. на всякий случай было неясно, если вы вызываете viewForHeaderInSection, он переопределяет titleForHeaderInSection. Вот почему текст не отображается, хотя вы считали, что настраиваете его. – clarky

+0

извините за поздний ответ. Я работал над ошибкой, которую я нашел, и это заставляло меня думать, поэтому я исправил ее ... просто. lol в любом случае я получаю эту ошибку. Использование необъявленного идентификатора 'kSectionTitleLeftMargin' –

+0

Ну, вам нужно решить, как вы лично хотите, чтобы ваш ярлык располагался в вашем заголовке. Определите эти четыре краевые константы соответствующим образом для вашего желаемого внешнего вида. Начните с нуля для всех и начните отступать от вашего сердца. В стороне, я бы не использовал статическую высоту 30, а скорее программно определял высоту, но я не хотел слишком увлекаться здесь ... – Rob

1

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

+0

Я отредактировал свой вопрос, чтобы показать методы, которые у меня есть для добавления текста. –

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