Скрыть пустые ячейки в UITableView - PullRequest
12 голосов
/ 14 июля 2010

У меня есть доступное для поиска табличное представление, но я хотел бы отображать только количество ячеек, которые возвращаются, как только пользователь начинает поиск. Например, если пользователь вводит символ, и существует только одна ячейка, соответствующая поиску, оставшиеся ячейки и оставшиеся ячейки таблицы будут пустыми. Мне было интересно, есть ли способ скрыть эти пустые клетки. Мне также было интересно, есть ли способ скрыть табличное представление, если поиск человека не соответствует никаким данным (по умолчанию отображается пустая ячейка с надписью «Нет результатов»).

Спасибо.

Ответы [ 8 ]

61 голосов
/ 13 апреля 2011

Установите tableFooterView на какое-нибудь фиктивное представление ([[UIView new] autorelease] будет работать нормально).Это заставляет UITableView показывать нижний колонтитул (который будет иметь нулевой размер) вместо пустых «ячеек».

23 голосов
/ 21 мая 2013
- (void) viewDidLoad
{
  [super viewDidLoad];
 *// self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];*   
  *//Since memory management is controlled by ARC now, so ignore autorelease*
  self.tableView.tableFooterView = [[UIView alloc] init] ;
}
5 голосов
/ 14 июля 2010

Измените реализацию tableView:numberOfRowsInSection: в своем источнике данных, чтобы она возвращала количество результатов поиска вместо общего количества элементов. Затем заполните эти ячейки результатами поиска, а не остальными данными.

0 голосов
/ 21 августа 2016

Скрытие пустых ячеек в Swift

Swift 3 Edition

 override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.tableView.tableFooterView = UIView(frame: CGRect.zero)
}

Swift 2 Edition

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    self.tableView.tableFooterView = UIView(frame: CGRectZero)
}
0 голосов
/ 10 мая 2016

для быстрого в xcode

    cell.userInteractionEnabled = false

поместите это в конец ячейки для строки по индексу таблицы

0 голосов
/ 08 января 2016
- (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 голосов
/ 04 ноября 2015

Для swift 2.x xCode 7:

override func viewDidLoad() {
        super.viewDidLoad()
        print("∙ \(NSStringFromClass(self.dynamicType))")
        ...
        self.tableView.tableFooterView = UIView()
}
0 голосов
/ 04 мая 2015

Просто вы можете использовать это ..

tableView.tableFooterView = [UIView new];
...