Как удалить пустые ячейки в UITableView? [дубликат]
этот вопрос уже есть ответ здесь:
Я пытаюсь отобразить простой UITableView
С некоторыми данными. Я хочу установить статическую высоту UITableView
чтобы он не отображал пустые ячейки в конце таблицы. как мне быть? это?
код:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%d", [arr count]);
return [arr count];
}
11 ответов
установите нулевой вид нижнего колонтитула таблицы высоты (возможно, в вашем viewDidLoad
метод), например:
Свифт:
tableView.tableFooterView = UIView()
Цель-C:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
поскольку таблица думает, что есть нижний колонтитул, он не отображает никаких ячеек, кроме тех, которые вы явно просили.
интерфейс builder pro-tip:
Если вы используете xib/раскадровки, вы можете просто перетащить UIView (с высота 0pt) в нижней части UITableView.
Swift 3 синтаксис:
tableView.tableFooterView = UIView(frame: .zero)
синтаксис Swift:
tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
синтаксис Swift 2.0:
tableView.tableFooterView = UIView(frame: CGRect.zero)
реализовано с помощью swift на Xcode 6.1
self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true
вторая строка кода не вызывает никакого эффекта на презентацию, вы можете использовать, чтобы проверить, скрыта или нет.
ответ взят из этой ссылки не удается скрыть пустые ячейки в UITableView Swift
Я не могу добавить комментарий на данный момент, поэтому добавляя это в качестве ответа.
@Andy's answer хорош, и те же результаты могут быть достигнуты со следующей строкой кода:
tableView.tableFooterView = [UIView new];
' new ' метод принадлежит классу NSObject и вызывает методы alloc и init для UIView.
я попробовал код:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
на viewDidLoad секция и xcode6 показали предупреждение. Я поставил "себя."перед ним и теперь он отлично работает. поэтому рабочий код я использую:
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
или вы можете вызвать метод tableView, чтобы установить высоту нижнего колонтитула в 1 точке, и он добавит последнюю строку, но вы также можете скрыть ее, установив цвет фона нижнего колонтитула.
код:
func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
return 1
}
используя UITableViewController
принятое решение изменит высоту TableViewCell
. Чтобы исправить это, выполните следующие действия:
-
написать фрагмент кода, приведенный ниже в
ViewDidLoad
метод.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
-
добавить следующий метод в .
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return (cell height set on storyboard); }
вот и все. Вы можете построить и запустить свой проект.
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}
в приведенном ниже методе:
- (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.