2010-07-14 3 views
12

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

Спасибо.

ответ

5

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

61

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

+0

Похоже на ошибку, но это работает! –

+1

это все еще работает в iOS5 и ARC? – codejunkie

+0

@codejunkie - я не пробовал; должен работать нормально, но вам не нужна автореферат. – TomSwift

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

self.tableView.tableFooterView = [[UIView alloc] init]; работал, но у меня возникла ошибка с авторекламой (автореклама недоступна: недоступна в режиме автоматического подсчета ссылок) – mrmuggles

+0

Я обновил ответ, надеюсь, что он станет более понятным. – yunas

0

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

tableView.tableFooterView = [UIView new]; 
0

Для быстрой 2.x Xcode 7:

override func viewDidLoad() { 
     super.viewDidLoad() 
     print("∙ \(NSStringFromClass(self.dynamicType))") 
     ... 
     self.tableView.tableFooterView = UIView() 
} 
0
- (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

для скор в Xcode

cell.userInteractionEnabled = false 

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

0

Скрытие пустых клеток в Swift

Swift 3 Издание

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

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

Свифт 2 Издание

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

    self.tableView.tableFooterView = UIView(frame: CGRectZero) 
} 
Смежные вопросы