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

Сегмент разделителя сгруппированных разделов UITableView

Я знаю, что этот вопрос задавали раньше. Но ни один человек в Интернете не имел достаточного рабочего ответа.

РЕДАКТИРОВАТЬ. Очевидно, люди больше не читают вопросы, на SO. Поэтому я пытаюсь уточнить: я хочу удалить СЕПАРАТОР. Сепаратор не является ни пространством над секцией, ни tableViewHeader или tableViewFooterView. Это только тонкая линия выше (полностью слева направо).

У меня есть сгруппированный UITableView (я не хочу использовать простой стиль по многим другим причинам, возьмите его как есть), который имеет несколько групп.

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

Настройка tableViews tableFooterView - это то, что я часто читаю, но он никогда не работал.

Я использовал tableView со статическим содержимым раньше, и мне удалось удалить разделитель в -[UITableViewController viewDidLoad], используя это:

- (void)viewDidLoad {
    [[[self headerTableCell] valueForKey:@"_topSeparatorView"] removeFromSuperView];
}

Так как теперь мне пришлось изменить tableView на динамический, свойство IBOutlet больше не будет работать (очевидно).

Итак, я пробовал все, -[id tableView:willDisplayCell:atIndexPath:], -[UITableViewCell initWithStyle:reuseIdentifier:, prepareForReuse, awakeFromNib] и некоторые другие.

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

4b9b3361

Ответ 1

что я получаю из вашей ситуации, у вас есть сгруппированный UITableView, который вам нужен в первом разделе без разделителя, и вы хотите сохранить разделитель в других разделах, удалить разделитель из всей таблицы из инспектора атрибутов make Сепаратор: Нет создайте пользовательский UITableviewCell в раскадровке для других разделов и добавьте Просмотр в конце его с высотой 1 и шириной всего экрана (например, разделителя по умолчанию) это может быть не лучшая идея, но это позволит вам иметь первый раздел без разделителя

Ответ 2

Возможно, эта проблема такая же, как у меня раньше. Наконец, мой способ решить эту проблему: установить табличный вид delegate метод (CGFloat)tableView:(UITableView *)tableView heightForHeaderAtSection:(NSInteger)section, затем return CGFLOAT_MIN;

Ответ 3

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

+(void)removeLastSectionSeparatorForTableView:(UITableView *)tableView
{
    UIView *oldSeparatorView = [tableView viewWithTag:kTagDummySectionSeparator];

    if (oldSeparatorView != nil)
    {
        [oldSeparatorView removeFromSuperview];
    }

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(),
                   ^{

                       UIView *view = [[UIView alloc] init];
                       view.tag = kTagDummySectionSeparator;
                       view.backgroundColor = [UIColor colorWithRed:239.0/255 green:239.0/255 blue:244.0/255 alpha:1.0];//Group table background color
                       view.frame = CGRectMake(0,
                                               tableView.contentSize.height-40,
                                               tableView.bounds.size.width,
                                               2);
                       [tableView addSubview:view];
                   });
}