Сегмент разделителя сгруппированных разделов 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]
и некоторые другие.
В любом случае этот разделитель равен нулю. Поэтому мне нужен метод, который вызывается, когда настраивается полная иерархия представления ячейки.
Ответы
Ответ 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];
});
}