Удаление последнего разделителя ячейки в таблице

У меня есть статический TableView, настроенный в моей раскадровке, и я пытаюсь удалить разделитель в последней ячейке для эстетических целей. Я просмотрел различные ответы на этом сайте и других сайтах, и все они указывают на этот тип кода для IOS8

 self.tableView.tableFooterView = UIView()

Однако, когда я запускаю приложение, разделитель все еще существует. Не слишком уверен, что я делаю неправильно.

sep

Ответ 1

Один умный способ удалить разделитель из последней ячейки - добавить простой вид с высотой только 1.

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 1)];

Ответ 2

Swift 3 Версия голосового ответа:

tableView.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1))

Он работает, даже если число ячеек динамическое.

Ответ 3

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

Работает в iOS 8. (Возможно, работает в iOS 6+).

Добавьте к своему делегату следующее:

#pragma mark - UITableViewDelegate

- (CGFloat) tableView:(UITableView*)table
        heightForFooterInSection:(NSInteger)section {
     // Hide the separator when the table is first displayed
     // of any sections that are visible on the screen.
     [self hideBottomSeparator:table];

     return 0.01f; // Or whatever you already return.
}


- (void) scrollViewDidScroll:(UITableView*)table {
    // Hide separators that are visible after table scrolls.
    // Check that event did not come from other scrollers
    // in the table.
    if ([table isKindOfClass:UITableView.class]) {
         [self hideBottomSeparator:table];
    }
}

- (void) hideBottomSeparator:(UITableView*)table {
    for (UIView* cell in table.visibleCells) {
         [self removeBottomSeparatorFromCell:cell];
    }
}

- (void) removeBottomSeparatorFromCell:(UITableViewCell*)cell {
    for (UIView* view in cell.subviews) {
        if (view.frame.origin.x == 0 &&
                view.frame.origin.y > cell.frame.size.height - 2 &&
                view.frame.size.width == cell.frame.size.width &&
                view.frame.size.height < 2) {
            [view removeFromSuperview];
        }
    }
}

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

Чтобы удалить верхний разделитель, закомментируйте origin.y check

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

Примечание:, поскольку он удаляет разделители только по размеру (и положению), он может выйти из строя для значений вставки таблицы (или ячейки), отличной от значения по умолчанию, или если iOS изменит внешний вид разделителя. Кроме того, он может выйти из строя, если iOS изменен так, что разделители не являются подзонами ячеек, и в этом случае потребуется более строгое сканирование, чтобы найти представления разделителя.

Он полагается на iOS, добавляя ячейки в таблицу перед вызовом heightForFooterInSection:

Кроме того, как указано выше, он удалит все разделители из простой таблицы.

Ответ 4

Следующее решение должно работать, поскольку все, что требуется, - это простой расчет:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return self.tableView.frame.height/X+1/X
}

X - количество ячеек, которые вы хотите в этой таблице.

Ответ 5

Решение для xamarin.iOS:

ActionsTableView.TableFooterView = new UIView() { Frame = new CGRect(0, 0, ActionsTableView.Frame.Size.Width, 1) };