Скрыть пустые ячейки в UITableView

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

спасибо.

8 ответов


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


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


- (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] ;
}

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

tableView.tableFooterView = [UIView new];

для swift 2.x xCode 7:

override func viewDidLoad() {
        super.viewDidLoad()
        print("∙ \(NSStringFromClass(self.dynamicType))")
        ...
        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.


для swift в xcode

    cell.userInteractionEnabled = false

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


скрытие пустых ячеек в 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)
}