如果表视图为空,则显示标签

时间:2012-02-26 23:26:33

标签: objective-c ios uitableview core-data

我正在使用Core Data存储项目名称并将其显示在表格视图中。当表视图为空(数据库中没有数据)时,它是空白的。从用户的角度来看,这并不是很好,所以我希望能够显示一个标签,上面写着“没有项目”。

我该怎么做?我需要:

  1. 检查数据库是否为空并设置BOOL
  2. 如果此BOOL设置为true或YES,则显示标签?或将cell.textLabel.text设置为“No Projects”
  3. 如果我在正确的轨道上,我真的很感激一些示例代码,以帮助我朝着正确的方向前进。

    由于

3 个答案:

答案 0 :(得分:3)

我最终使用以下代码检查我的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 :(得分:1)

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

答案 2 :(得分:1)

有一个方便的lib:UITableView-NXEmptyView

一样简单:

tableView.nxEV_emptyView = yourView

UPD:有一些更灵活的up-to-date solution