Как удалить пустые ячейки в UITableView?
Я пытаюсь отобразить простой UITableView
с некоторыми данными. Я хочу установить статическую высоту UITableView
, чтобы она не отображала пустые ячейки в конце таблицы. как это сделать?
код:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%d", [arr count]);
return [arr count];
}
Ответы
Ответ 1
Установите нижний колонтитул таблицы высоты нулевой высоты (возможно, в вашем методе viewDidLoad
), например:
Swift:
tableView.tableFooterView = UIView()
Objective-C:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Поскольку таблица считает, что есть нижний колонтитул, он не отображает никаких ячеек, кроме тех, которые вы явно просили.
Прокрутка конструктора интерфейса:
Если вы используете xib/Storyboard, вы можете просто перетащить UIView (с высотой 0pt) в нижнюю часть UITableView.
Ответ 2
Синтаксис Swift 3:
tableView.tableFooterView = UIView(frame: .zero)
Синтаксис Swift: < 2.0
tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
Синтаксис Swift 2.0:
tableView.tableFooterView = UIView(frame: CGRect.zero)
Ответ 3
В раскадровке выберите UITableView
и измените свойство Style с Plain
на Grouped
.
Ответ 4
Реализовано с быстрым на Xcode 6.1
self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true
Вторая строка кода не оказывает никакого влияния на презентацию, которую вы можете использовать, чтобы проверить, скрыта она или нет.
Ответ, взятый из этой ссылки
Не удается скрыть пустые ячейки в UITableView Swift
Ответ 5
Я не могу добавить комментарий на данный момент, поэтому добавив это в качестве ответа.
@Любой ответ хорош, и те же результаты могут быть достигнуты с помощью следующей строки кода:
tableView.tableFooterView = [UIView new];
"новый" метод принадлежит NSObject
класса и вызывает alloc
и init
методов UIView
.
Ответ 6
Я пробовал код:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
В разделе viewDidLoad и xcode6 появилось предупреждение. Я поставил "я". перед ним, и теперь он отлично работает. поэтому рабочий код, который я использую:
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Ответ 7
или вы можете вызвать метод tableView, чтобы установить высоту нижнего колонтитула в 1 точку, и она добавит последнюю строку, но вы также можете скрыть ее, установив цвет фона нижнего колонтитула.
код:
func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
return 1
}
выглядит как последняя строка
Ответ 8
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}
Ответ 9
Использование UITableViewController
Принятое решение изменит высоту TableViewCell
. Чтобы исправить это, выполните следующие шаги:
-
Введите фрагмент кода, приведенный ниже, в ViewDidLoad
.
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
-
Добавьте следующий метод в файл TableViewClass.m
.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return (cell height set on storyboard);
}
Что это. Вы можете создавать и запускать свой проект.
Ответ 10
в следующем методе:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65));
}
else
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
}
return [array count];
}
здесь 65 - высота ячейки, а 66 - высота навигационной панели в UIViewController.
Ответ 11
in viewDidLoad:
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];