我把消息"没有结果"当我的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.
答案 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];
删除值时,从数组中删除对象并重新加载表。 如果您遇到任何问题,请告诉我。