it-roy-ru.com

Как убрать пустые ячейки в UITableView?

я пытаюсь отобразить простое UITableView с некоторыми данными. Я хочу установить статическую высоту UITableView, чтобы она не отображала пустые ячейки в конце таблицы. как я это сделал?

код:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"%d", [arr count]);
    return [arr count];
}
339
z22

Установите представление нижнего колонтитула таблицы нулевой высоты (возможно, в вашем методе viewDidLoad), например, так:

Swift:

tableView.tableFooterView = UIView()

Objective-C:

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

Поскольку таблица считает, что есть нижний колонтитул, она не отображает никаких ячеек, кроме тех, которые вы явно просили.

Pro-tip конструктора интерфейса:

Если вы используете xib/Storyboard, вы можете просто перетащить UIView (с высотой 0pt) в нижнюю часть UITableView.

847
Andy

Синтаксис Swift 3:

tableView.tableFooterView = UIView(frame: .zero)

быстрый синтаксис: <2.

tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

Синтаксис Swift 2.0:

tableView.tableFooterView = UIView(frame: CGRect.zero)
100
Dustin Williams

В раскадровке выберите UITableView и измените свойство Style с Plain на Grouped.

61
Gabriel Diaconescu

Реализуется с помощью Swift в Xcode 6.1

self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true

Вторая строка кода не оказывает никакого влияния на представление, вы можете использовать, чтобы проверить, скрыт или нет.

Ответ взят по этой ссылке не удается скрыть пустые ячейки в UITableView Swift

15
Leonardo Jorge

Я не могу добавить комментарий на данный момент, поэтому добавив его в качестве ответа.

@ Ответ Энди хорош, и те же результаты могут быть достигнуты с помощью следующей строки кода:

tableView.tableFooterView = [UIView new];

Метод 'new' принадлежит классу NSObject и вызывает методы alloc и init для UIView.

11
Sahil

Я попробовал код:

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

В разделе viewDidLoad и xcode6 выдается предупреждение. Я поставил "я". перед ним и сейчас работает нормально. поэтому рабочий код, который я использую:

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

или вы можете вызвать метод tableView, чтобы установить высоту нижнего колонтитула в 1 точку, и он добавит последнюю строку, но вы также можете скрыть это, установив цвет фона нижнего колонтитула.

код:

func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
     return 1
}

выглядит как последняя строка

3
KostiaZzz

Используя UITableViewController

Принятое решение изменит высоту TableViewCell. Чтобы это исправить, выполните следующие действия:

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

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

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

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        return (cell height set on storyboard); 
    }
    

Вот и все. Вы можете построить и запустить свой проект.

1
Manan Devani
override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

/// OR 

    self.tableView.tableFooterView = UIView()
}
1
A.G

в методе ниже:

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

0
Bharath Raj