2009-11-18 6 views
4

У меня есть UITableView, созданный как сгруппированный tableView. При определенных обстоятельствах мне нужно создать собственное представление для заголовка, а при других обстоятельствах я хочу использовать его по умолчанию.Заголовок заголовка по умолчанию для UITableView

Создание пользовательского заголовка является легкой частью - просто использовать делегат:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

Однако, то, что я вернусь из этого делегата, если я хочу, вид заголовка по умолчанию вместо этого?

Я пробовал возвращать нуль, и это работает, как и ожидалось, когда табличный вид выглядит как Plain. Если представление таблицы составлено как Grouped, тогда заголовок по умолчанию исчезает, когда я возвращаю nil.

Как получить заголовок заголовка по умолчанию, учитывая, что мне также иногда нужны пользовательские заголовки?

Edit:

Я думаю, что я нашел эту проблему. В Tableview: heightForHeaderInSection: Я делаю следующее:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    if ([myArray count] == 0) return 80; 
    else return [tableView sectionHeaderHeight]; 
} 

Кажется, что [Tableview sectionHeaderHeight] возвращает неверную высоту моего заголовка. Он устанавливает значение 10, но должно быть около 30.

+1

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

+0

Хммм, интересно. Для меня это не работает. Не могли бы вы разместить образец вашего viewForHeaderInSection и вашего кода heightForHeaderInSection? – rein

ответ

10

Правильный ответ на эти вопросы есть:

Для возврата просмотра по умолчанию возврата в ноль

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    return nil; 
} 

Для возврата возврата высоты заголовка по умолчанию -1

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return -1; 
} 

, который работал на меня !

0

Ответил на мой вопрос в редакции. Мне нужно было вернуть жестко запрограммированную высоту для заголовка раздела.

0

На самом деле, если вы хотите, заголовок по умолчанию, вы должны использовать следующие delegate method:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return @"my title text"; 
} 
+0

Вопрос о заголовке VIEW, а не в тексте, который входит в него. – rein

+0

@ вы, вы сказали, что хотите «вид по умолчанию», что и получается, если вы только меняете текст – Daniel

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