将“添加新项”行添加到UITableView的底行时缺少单元格内容

时间:2011-08-03 07:16:24

标签: iphone uitableview scroll

我正在创建一个“添加新项目”行到表视图中的一个部分,该部分在进入/退出编辑模式时动态添加/删除。这样可以正常工作,但是如果表格长于屏幕,那么当您向下滚动以查看新的“添加新项目行”时,未显示任何尚未显示的行的标签。

我的代码的关键部分是:

... setEditing

-(void)setEditing:(BOOL)editing animated:(BOOL)animate
{

    [super setEditing:editing animated:animate];
    [self.tableView setEditing:editing animated:animate];

    NSArray *paths = [NSArray arrayWithObject:
                      [NSIndexPath indexPathForRow:[self.location.rooms count] inSection:kSectionRooms]];
    if (editing)
    {
        [[self tableView] insertRowsAtIndexPaths:paths 
                            withRowAnimation:UITableViewRowAnimationTop];
    }
    else {
        [[self tableView] deleteRowsAtIndexPaths:paths 
                            withRowAnimation:UITableViewRowAnimationTop];
    }

}

... numberOfRowsInSection

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    switch (section) {
        case kSectionFields:
            return NUM_SECTION_FIELDS_ROWS;
            break;
        case kSectionRooms:
            return [location.rooms count] + ([self.tableView isEditing] ? 1 : 0);
            break;
        default:
            return 0;
            break;
    }
return 0;
}

cellForRowAtIndexPath的一部分

        if ([self.tableView isEditing] && row == location.rooms.count)
        {

            roomCell.textLabel.text = @"Add new room...";


        }
        else
        {
            roomCell.textLabel.text = [[loc.rooms objectAtIndex:row] name];
        }

... editingStyleForRowAtIndexPath

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {


switch ([indexPath section])
{
    case kSectionFields:
        return UITableViewCellEditingStyleNone;
        break;
    case kSectionRooms:
        if ([indexPath row] == location.rooms.count && [self.tableView isEditing])
        {
            return UITableViewCellEditingStyleInsert;
        }
        else
        {
            return UITableViewCellEditingStyleDelete;
        }

        break;
}

return UITableViewCellEditingStyleNone;

}

如果没有滚动,这些都能正常工作,但只要滚动就会出现问题。我知道这必须是因为TableView没有显示隐藏的行,因此没有经历延迟加载过程。我已经尝试过使用reloadData,但这并没有什么区别(不出所料)但是由于我是新手,我不确定使行显示的最佳方式。

我相信会有一个简单的解决方案,所以任何想法都会受到最高的赞赏!

提前干杯

Jez的

0 个答案:

没有答案