Показать метку, если табличное представление пусто - PullRequest
3 голосов
/ 27 февраля 2012

Я использую Базовые Данные, чтобы сохранить имя проекта и отобразить его в виде таблицы.Когда табличное представление пусто (нет данных в базе данных), оно пустое.С точки зрения пользователя это не очень хорошо, поэтому я хочу иметь возможность отображать ярлык с надписью «Нет проектов».

Как бы я это сделал?Мне нужно:

  1. Проверить, что база данных пуста и установить BOOL
  2. , если для этого BOOL установлено значение true или YES, показать метку?или установите для cell.textLabel.text значение «Нет проектов»

Если я на верном пути, я бы очень признателен за пример кода, который дал бы мне толчок в правильном направлении.

Спасибо

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Я использовал следующий код, чтобы проверить, пуста ли моя база данных Core Data. Работает блестяще. Это должно быть в файле CoreDataController.m.

NSLog(@"Total number of rows = %d ", totalNumberOfRowsInDatabase);

    if (totalNumberOfRowsInDatabase == 0)
    {

        NSLog(@"Database is empty");
        UIImage *image = [UIImage imageNamed:@"emptyTable.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        [imageView setFrame:self.tableView.bounds];
        [self.tableView setBackgroundView:imageView];
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        [self.tableView setBackgroundColor:[UIColor clearColor]];

    }
    else 
    {
        [self.tableView setBackgroundView:nil];
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        [self.tableView setBackgroundColor:[UIColor whiteColor]];
    }

    return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects];
1 голос
/ 07 июля 2014

Для этого есть удобная библиотека: UITableView-NXEmptyView

Так же просто, как:

tableView.nxEV_emptyView = yourView

UPD: есть что-то более гибкое и современное решение .

1 голос
/ 27 февраля 2012
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
   if (section == mySection) return MAX(dataCount, 1);
   else // yadda
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   // yadda

   if ([indexPath section] == mySection) {
      if (dataCount == 0) return mySpecialCell;
   }


   // yadda
}
...