Как я могу показать UITableView
Строки только, содержащие данные, а не другие строки. По умолчанию UITableView
показывает 10 строк. Если у нас есть данные для трех строк, будет отображаться только три строки
Как я могу это реализовать? Спасибо.
UITableView - как показать только строки, содержащие данные
Ответ 1
Вы можете установить нижний колонтитул и сделать его невидимым, если хотите. Сепараторы появятся только для строк, содержащих данные:
self.theTableView.tableFooterView = [[[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 10.0f)] autorelease];
Ответ 2
Попробуйте это.
self.tableView.tableFooterView = [UIView new];
Ответ 3
Я не думаю, что можно скрыть дополнительные разделители стандартным способом. Это поведение задано.
Plain
стиль tableView показывает row/separator
, даже если реальных строк нет. Только Grouped
стиль tableView показывает только существующие строки.
Изменить: Как было предложено другими, вы можете добавить нижний колонтитул в tableView, чтобы скрыть эти дополнительные разделители.
Ответ 4
ОК, я предполагаю, что вы используете Interface Builder.
Простой способ:
-
убедитесь, что вы выбрали класс контроллера вида как UITableViewDelegate и UITabbleViewDataSource.
-
В ViewController.h(или его вызываемом) добавьте
<UITableViewDelegate,UITableViewDataSource>
перед {из определения @interface. к классу, который должен соответствовать этим протоколам. -
Убедитесь, что методы протокола минимального источника данных находятся в классе:
– tableView:cellForRowAtIndexPath: – tableView:numberOfRowsInSection:
-
в методе tableView: numberOfRowsInSection: возвращает число желаемых строк - 3 или бит кода для вычисления этого свойства
-
в - tableView: cellForRowAtIndexPath: метод делает то, что вам нужно в ячейке, и возвращает его. Код котла
является:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"] autorelease]; } cell.text = @"I am a cell"; return cell; }
N.B. Если вы не используете Interface Builder, выполните следующие действия: tableView.delegate = self; tableView.datasource = self;
Ответ 5
Добавьте статическую ячейку, заполняющую остальную часть экрана.
Ответ 6
Просто добавьте ниже код в свой метод viewDidLoad().
self.tableview.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Ответ 7
Вы можете указать необходимое количество строк в возвращаемом параметре следующей функции:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return NUMBER_OF_ROWS;
}
Подробнее см. в документации Apple по UITableView.