Как удалить пустые ячейки в 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)

в раскадровке, выберите UITableView, и изменить стиль свойства из Plain to Grouped.


реализовано с помощью 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. Чтобы исправить это, выполните следующие действия:

  1. написать фрагмент кода, приведенный ниже в ViewDidLoad метод.

    tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

  2. добавить следующий метод в .

    - (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.


в viewDidLoad:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];