Подтвердить что ты не робот

Разделение между заголовком и первой ячейкой - в обычном UITableView

У меня есть таблица с обычным стилем и только одна секция. У меня есть реализованный viewForHeaderInSection:, чтобы добавить пользовательский вид в заголовок раздела.

Я не могу видеть разделительную линию между заголовком заголовка раздела таблицы и моим первым клетка. [См. Прикрепленное изображение]

alt text

Что я делаю неправильно?

4b9b3361

Ответ 1

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

Ответ 2

Как отмечает Джереми в своем ответе, iOS не добавляет разделителей выше/ниже верхних/нижних колонтитулов; вы можете просто использовать UIView для создания строки самостоятельно.

Здесь приведен код для добавления стандартного вида разделителя в представление заголовка:

CGRect sepFrame = CGRectMake(0, headerView.frame.size.height-1, 320, 1);
seperatorView = [[[UIView alloc] initWithFrame:sepFrame] autorelease];
seperatorView.backgroundColor = [UIColor colorWithWhite:224.0/255.0 alpha:1.0];
[headerView addSubview:seperatorView];

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

Ответ 3

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

В методе tableView:heightForHeaderInSection:(NSInteger)section

if(section ==0)
    return 3; // (space u want to give between header and first row);

return 10; //(ur section header height)

В методе tableView:viewForHeaderInSection:(NSInteger)section

  UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 3)];
  headerView.backgroundColor = [UIColor clearColor];   // use your own design

  return headerView;

Ответ 4

Добавьте дополнительную "скрытую" строку в раздел, в который вы хотите добавить разделитель, вернув +1 существующее количество строк в tableView:numberOfRowsInSection:. Затем добавьте следующий метод:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ( indexPath.section == sectionOfHiddenRow && indexPath.row == indexOfHiddenRow )
        return 0.f;
    else
        return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}

Если вы хотите, чтобы разделитель находился в верхней части раздела (после заголовка), indexOfHiddenRow будет 0. Если вы хотите его в нижней части раздела (перед нижним колонтитулом), оно будет [self tableView:tableView numberOfRowsInSection:sectionOfHiddenRow] - 1.

Теперь внутри tableView:cellForRowAtIndexPath: просто верните [UITableViewCell new] для скрытой строки (она не будет отображаться, поэтому нет необходимости устанавливать кадр или что-то еще). Возможно, вам понадобится внести некоторые корректировки индекса -1 в ваши методы UITableViewDataSource и UITableViewDelegate, но он работает (протестирован в iOS 7) и гарантирует согласованный стиль (нет необходимости рисовать собственный "поддельный" разделитель - это истинный оттянутый системой разделитель UITableView).

Ответ 5

Добавить разделитель между представлением заголовка и первой строкой: - В представлении для метода заголовка в разделе делегат добавить свойство subview self.separator//@свойство (неатомное, сильное) UIImageView * separator;

- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section {

return 41; 
}


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

self.headerView = [[UIView alloc] init];
self.headerView.backgroundColor = [UIUtils colorForRGBColor:TIMESHEET_HEADERVIEW_COLOR];

self.separator = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"seperator.png"]];
self.separator.frame = CGRectMake(0,40,self.view.frame.size.width,1);
[self.headerView addSubview:self.separator];
return self.headerView;

}

Ответ 6

Я расширил UITableViewCell с помощью нескольких методов разделителя (в Swift). С ними я могу добавить разделители в заголовки или удалить их из обычных ячеек. Надеюсь, это может помочь некоторым людям.

public extension UITableViewCell
{
    func addSeparator(y: CGFloat, margin: CGFloat, color: UIColor)
    {
        let sepFrame = CGRectMake(margin, y, self.frame.width - margin, 0.7);
        let seperatorView = UIView(frame: sepFrame);
        seperatorView.backgroundColor = color;
        self.addSubview(seperatorView);
    }

    public func addTopSeparator(tableView: UITableView)
    {
        let margin = tableView.separatorInset.left;

        self.addSeparator(0, margin: margin, color: tableView.separatorColor!);
    }

    public func addBottomSeparator(tableView: UITableView, cellHeight: CGFloat)
    {
        let margin = tableView.separatorInset.left;

        self.addSeparator(cellHeight-2, margin: margin, color: tableView.separatorColor!);
    }

    public func removeSeparator(width: CGFloat)
    {
        self.separatorInset = UIEdgeInsetsMake(0.0, width, 0.0, 0.0);
    }

}