2011-08-24 8 views
3

Я просмотрел все шоу, но не могу найти, как просто определить свой заголовок раздела. До сих пор я пробовал это.Как добавить заголовок в раздел в UITableView?

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

} 

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

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

Я попытался

if (section == 0){ 
    return @"header one"; 
} 

но это не отрезало горчицу .. любая помощь была бы оценена.

+1

Просто добавить как примечание стороны: Вы возвращают строку, в то время как viewForHeaderInSection предположим, что возвращаются - (UIView *) – Saran

ответ

10

Если вы хотите получить название, переопределите этот метод в UITableViewDataSource, а не два, упомянутых выше.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
+0

Абсолютно корректно. – Nitish

+0

какое значение мы должны вернуть в нем, если мы не используем метку для заголовка в разделе i, попробовал это, он показывает ошибку «Контроль может достигать конца не-void функции» –

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

ожидает вас, чтобы вернуть объект, который является UIView, например, сам или что-то вроде UILabel UIView.

Итак, что вы можете сделать, это вернуть UILabel, который затем содержит ваш заголовок. Пример:

UILabel *label = [[UILabel alloc] init]; 
[label setText:@"Section 0"]; 
[label autorelease]; 
return label; 

В качестве альтернативы вы можете создать целостный вид в построителе интерфейса и выделить, инициализировать и вернуть это.

Если вы ищете только базовый текст, то ответ gamozzii - это то, что вы ищете.

+0

Спасибо .. так скажите, например, если вы хотел бы, чтобы изображение или кнопка в вашем заголовке справа от раздела, вы бы сделали что-то вроде создания своего собственного представления, а затем вызвали его из этого метода делегата ...? –

+0

Да, вы могли бы создать новый код UIView в коде, добавить свои подпрограммы (например, выравнивание по правильному фрейму UILabel), а затем вернуть новый UIView. –

+1

круто вызывающе собирается дать попробовать в какой-то момент: P приветствует помощь btw –

3

Следующее поможет вам.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
     return 1; 
    } 
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
     UIView *av=[[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 22)] autorelease]; 
     NSString * weekdayString = [self getDayFromDate:testDate]; 
     UILabel *lblStr = [[UILabel alloc]initWithFrame:CGRectMake(40, 2, 100, 20)]; 
     lblStr.text = @"header one"; 
     lblStr.backgroundColor = [UIColor clearColor]; 
     lblStr.textColor=[UIColor whiteColor]; 
     lblStr.font = [UIFont boldSystemFontOfSize:15]; 
     [av addSubview:lblStr]; 
     [lblStr release];  
    } 
    - (CGFloat)tableView:(UITableView *)tableViewheightForHeaderInSection:(NSInteger)section { 
     return 40; 
    } 
2

Просто используйте:

// Это метод делегата, который вам не хватает в TableView.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    if (section == 0){ 
     return @"header one"; 
     } 

} 

а если вы хотите добавить View в заголовке или хотите сделать пользовательские вещи, то вам нужно использовать этот метод делегата:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; 
Смежные вопросы