2012-05-06 6 views
1

Я пытаюсь изменить цвет фона заголовка в UITableViewController, у которого на самом деле есть собственный * .h/m файл. Я мой файл .m, я вставил следующий код как предложено несколько StackOverflow отвечает:Изменение цвета фона заголовка в UITableView

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

Но результат таков:

enter image description here

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

Дополнительная информация В случае, если этот комментарий полезен: я новичок в xcode 4.2. То, что я сделал, это пойти в раскадровку, перетащить контроллер навигации, перетащить табличный вид. Перейдите в левый проводник барда и добавьте новый файл с именем MyUITableViewController, который расширяет UITableviewController. Вложил мою функцию выше в файл MyUITabelViewController.m. Затем я реализовал функцию heightforheaderinsection funciton, чтобы вернуть значение CGfloat (и все, что было потом, увеличило пространство между синим заголовком и первой ячейкой). Вернитесь к раскадровке, щелкните левой кнопкой мыши мой контроллер tableview и убедитесь, что он указывает на мой класс MyUITableViewController. Какие шаги мне не хватает?

ответ

3

ссылка на класс UITableViewDelegate компании Apple, по методу - tableView:viewForHeaderInSection::

Этот метод работает только правильно, когда tableView: heightForHeaderInSection: также реализуется.

Вы реализовали этот метод?

EDIT: после читать ваши комментарии, и зная, что вы используете раскадровку, у вас есть простой способ для создания пользовательского фона для всей таблицы:

1) Создать TableViewController на раскадровке

2) Перетащите UIView:

UIView

3) Отбросьте UIView в заголовке вашего представления в виде таблицы, вот:

Dropping view into tableView header

4) Вы теперь взгляд на заголовок, который вы можете изменить размер, изменить цвет, добавить, например, UILabel ...:

TableView with header header with label

+0

Я устал от реализации heightForheaderinsection, но все, что было сделано, увеличивало расстояние между синим заголовком и первой ячейкой. Как переопределить цвет для синего заголовка? – John

+0

Но какой вид таблицы вы хотите? Можете ли вы здесь написать порядок своих элементов (я имею в виду, например: красный UIView (30px), заголовок таблицы, ячейку ...) – Garoal

+0

Я новичок в xcode 4.2, поэтому не уверен, что вы имеете в виду. То, что я сделал, это пойти в раскадровку, перетащить контроллер навигации, перетащить табличный вид. Перейдите в левый проводник барда и добавьте новый файл с именем MyUITableViewController, который расширяет UITableviewController. Вложил мою функцию выше в файл MyUITabelViewController.m. то я применил функцию heightforheaderinsection, чтобы вернуть значение CGfloat. Вернитесь к раскадровке, щелкните левой кнопкой мыши мой контроллер tableview и убедитесь, что он указывает на мой класс MyUITableViewController. Какие шаги мне не хватает? спасибо – John

0

Использовать метод делегата tablview для настройки tablviewheader. Я показываю здесь некоторый код использовать ...

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

    UIView *headerView = [[UIView alloc] init]; 
    UIImageView *tempimage = [[UIImageView alloc]initWithFrame:CGRectMake(10, 5, 300,34)];// you can also use image view to show your required color. 
    tempimage.image = [UIImage imageNamed:@"yourimage.png"]; 
    [headerView addSubview:tempimage]; 
    [headerView addSubview:headername]; 
    return headerView; 

    } 

Надежда, это поможет вам ..

+0

Я пробовал ваш код, но он по-прежнему представляет ту же проблему, о которой упоминалось в моем вопросе. Цвет заголовка отображается между синим заголовком и первой ячейкой. – John

+0

вам нужен пользовательский заголовок. У меня есть код выше, и он работает нормально. Вы использовали UIView и UIImageView, так как я показываю вам в своем коде. – Nit

+0

Да, я скопировал ваш код как есть и заменил yourimage.png на somethign else. имя пользователя не определено, поэтому я прокомментировал эту строку. Ваш код правильно создает пользовательский заголовок? – John

-1

Синее заголовок показан заголовок контроллера навигации.

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