Скрыть удалить разделительную строку, если UITableViewCells пусты [дубликат]
этот вопрос уже есть ответ здесь:
Исключите дополнительные разделители под UITableView
31 ответы
У меня есть UITableView и у меня есть только 3 строки в нем, и я могу видеть эти 3 строки. Проблема заключается в пустых ячейках: я вижу там линии. Я не хочу видеть эти строки.
любая идея, как удалить эти линии?
ниже изображение для того, что я ищу.
17 ответов:
вы можете скрыть
UITableViewстандартная разделительная линия, используя любой из приведенных ниже фрагментов кода. Самый простой способ добавить пользовательский разделитель-это добавить простойUIView1px высота:UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)]; separatorLineView.backgroundColor = [UIColor clearColor]; // set color as you want. [cell.contentView addSubview:separatorLineView];или
self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain]; self.tblView.delegate=self; self.tblView.dataSource=self; [self.view addSubview:self.tblView]; UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)]; v.backgroundColor = [UIColor clearColor]; [self.tblView setTableHeaderView:v]; [self.tblView setTableFooterView:v]; [v release];или
- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { // This will create a "invisible" footer return 0.01f; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { // To "clear" the footer view return [[UIView new] autorelease]; }или
а также проверить nickfalk это!--22-->, это очень коротко и полезно тоже. И вы также должны попробовать этот один линия,
self.tableView.tableFooterView = [[UIView alloc] init];не уверен, но он работает во всех версиях iOS, которые я проверил, с iOS 5 и позже, до iOS 7.
даже проще, чем ответ Андрея Z: Просто сделайте фиктивный tableFooterView в вашем классе UITableView:
self.tableFooterView = [UIView new]; // to hide empty cellsи Swift:
tableFooterView = UIView()
прозрачный
UIViewкакtableViewнижний колонтитул с высотой 1px сделает трюк.UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1)]; v.backgroundColor = [UIColor clearColor]; [self.tableView setTableFooterView:v];
обновленный ответ для swift и iOS 9. Это работает для табличных представлений
.Plainразнообразие.tableView.tableFooterView = UIView()
используйте этот код для удаления разделительной линии для пустых ячеек.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { // This will create a "invisible" footer return 0.01f; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { return [UIView new]; // If you are not using ARC: // return [[UIView new] autorelease]; }
пожалуйста, попробуйте следующий код:
self.tblView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; if ([self.tblView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tblView setSeparatorInset:UIEdgeInsetsZero]; } // write in view did load
просто возвращая пустой
UIView()inviewForFooterInSectionработала на меня:override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { return UIView() }
можно использовать
tableForBrands.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];это сработало для меня...
ни один из предложенных ответов не подходил для моей подобной проблемы. Реализация этого метода в делегате tableView наконец-то сработала:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { tableView.separatorStyle = UITableViewCellSeparatorStyleNone; }
Если вы используете раскадровки, вы можете просто перетащить UIView в свой UITableView ниже своих ячеек и установить его высоту на 0. (Протестированы только в проекте iOS 8)
Я думаю, это то, что вы ищете.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 1.0f; }
вы можете установить табличное представление для группирования вместо простого - это немного меняет внешний вид, но по крайней мере удаляет дополнительные строки.
У меня была эта точная проблема, и в итоге я перешел на групповые представления. Выглядит намного лучше.
некоторые из предыдущих предложений содержат большую концептуальную ошибку:
Если вы:
[cell addSubview: ....
даже если ячейка "повторно используется", вы добавите новое подвидо для разделителя!
избегайте его двумя способами:
a) используйте тег, а: 1) попросите подвида для этого тега пусть делитель = ячейка.viewWithTag(тег) ... 2) если присутствует, не добавляйте другой подвида 3)если нет добавить и пометить его.
b) создать пользовательский вид и добавьте свой пользовательский разделитель в "init" "awakeFromNib" пользовательской ячейки.
код):
if let divider = cell.viewWithTag(DIVIDER_TAG) as? UIView{ // nothing.. eventually change color bases in IndexPath... }else{ let frame = CGRectMake(0, cell.frame.height-1, cell.frame.width, 1) divider.tag = DIVIDER_TAG divider.backgroundColor = UIColor.redColor() cell.addSubview(divider) }
внутри cellForRowAtIndexPath
let separatorLineView:UIView = UIView(frame: CGRectMake(0,0,self.tableview.bounds.width,0.5)) separatorLineView.backgroundColor = tableView.separatorColor cell!.contentView.addSubview(separatorLineView)
добавить следующую строку
UITableViewDataSource numberOfRowsInSection:метод.tableView.separatorColor = [UIColor clearColor];

Comments