tableView显示删除行的“无结果”问题

时间:2013-01-04 12:06:41

标签: xcode tableview

我把消息"没有结果"当我的tableview为空时。 问题是,当我有1行,我想删除这行的行数 不要改变因为我有条件告诉我"没有结果"用排, 我可以制作bool属性,检查是否删除,然后如果用户删除这行不会显示消息"没有结果",但也许有人有更好的方法?

我的方法:

数量的部分:

if([[[self fetchResultsController] fetchedObjects] count] == 0)
        return 1;

部分中的行:

if([[[self fetchResultsController] fetchedObjects] count] == 0)
        return 1;

细胞:

if([[[self fetchResultsController] fetchedObjects] count] == 0){

        [[cell textLabel] setText:@"no results"];

    }else{ //create regular or from search cell.

2 个答案:

答案 0 :(得分:0)

我找到的最佳解决方案是制作标题而不是单元格,以避免删除和更新(核心数据)的问题。但如果没有行或部分,我所知道的标题就不会出现。所以我用这两种方法来解决它:

-(void) hideTitle{
    self.tableView.tableHeaderView = nil;
}

-(void) showTitle{

    self.contener = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 40)];
    self.label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];

    self.label.text = NSLocalizedString(@"Header for the table", @"");
    self.label.shadowOffset = CGSizeMake(0, 1);
    self.label.font = [UIFont boldSystemFontOfSize:22];
    self.label.backgroundColor = [UIColor redColor];
    [self.contener addSubview:[self label]];
    self.tableView.tableHeaderView = self.contener; 
}

我把这个名为show的名字放在 num_of_sections ..

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if([[[self fetchResultsController] fetchedObjects] count] == 0)
        [self showTitle];  .....}

此方法在删除行时效果很好。 我创建新行时使用的第二个名为hide的方法(我把方法放在我的“保存方法”中)这个方法删除标题。

编辑: 另一种方式:

在我尝试前几行...

if([[bla bla] count] == 0 && is_deleted == 0)
        return 1;

也改变细胞:

if([[bla bla] count] == 0){

    [[cell textLabel]setText:@"no results"];
    [[cell detailTextLabel] setText:nil];

    cell.accessoryType = UITableViewCellSelectionStyleNone;
    cell.userInteractionEnabled = NO;

}else{ 

  cell.userInteractionEnabled = YES;
  cell.accessoryType = UITableViewCellSelectionStyleBlue;

 ... }

问题是一个删除行,所以我使用bool来避免在didLoad method bool = 0;处粉碎 当我delete I insert 1 to the bool时不要忘记取消此单元格的删除选项!!

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (editingStyle == UITableViewCellEditingStyleDelete && [[bla bla] count] != 0)
        { ... }

这个解决方案的问题是它并不完美,当我删除最后一行时,我的tableView只有在我再次加载表时才显示空白,标题显示不是我想要的。

如果某人有更优雅的解决方案,请告诉我,我保证将您的答案视为正确答案。

答案 1 :(得分:0)

numberOfSectionsInTableView

撰写以下内容
if([[[self fetchResultsController] fetchedObjects] count] == 0)
        return 1;
else
        return [[[self fetchResultsController] fetchedObjects] count];

删除值时,从数组中删除对象并重新加载表。 如果您遇到任何问题,请告诉我。