Подтвердить что ты не робот

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

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

Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

tableView.tableFooterView = [UIView new];

Ответ 5

Для swift 2.x xCode 7:

override func viewDidLoad() {
        super.viewDidLoad()
        print("∙ \(NSStringFromClass(self.dynamicType))")
        ...
        self.tableView.tableFooterView = UIView()
}

Ответ 6

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

Ответ 7

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

    cell.userInteractionEnabled = false

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

Ответ 8

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

Свифт 3 Edition

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

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

Свифт 2 Edition

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

    self.tableView.tableFooterView = UIView(frame: CGRectZero)
}