UITableView - как показать только строки, содержащие данные

Как я могу показать UITableView Строки только, содержащие данные, а не другие строки. По умолчанию UITableView показывает 10 строк. Если у нас есть данные для трех строк, будет отображаться только три строки Как я могу это реализовать? Спасибо.

Ответ 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];