commitEditingStyle显示文本删除后没有找到记录

时间:2010-07-05 23:41:02

标签: iphone uitableview

使用以下代码,当uitableView中没有数据显示时,我能够显示文本消息:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section   {
// Return the number of rows in the section.
myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];

if ([appDelegate.myDataArray count] == 0)
{
    return 3;
}

return [appDelegate.myDataArray count];
}


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


static NSString* myCellIdentifier = @"MyCell";

   myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];

if ([appDelegate.myDataArray count] == 0)
{   
    if (indexPath.row == 2)
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myCellIdentifier]; // only reuse this type of cell here

        if (cell == nil) 
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myCellIdentifier] autorelease];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
        }
        cell.textLabel.text = (@"No Records Found");
        return cell;
    }
    else 
    {
        // return a blank row for spacing
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myCellIdentifier]; // only reuse this type of cell here

        if (cell == nil) 
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myCellIdentifier] autorelease];
        }
        cell.textLabel.text = (@"");
        return cell;
    }
} ........

我的问题是,当我使用该方法删除表的记录时,我想要有这种行为:

- (void)tableView:(UITableView *)tv  commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath {

目前,当我删除最后一条记录时,结果是崩溃: “...更新后的现有部分中包含的行数(3)必须等于更新前该部分中包含的行数(1)......”

有关如何将文本显示3行(如上所示)并且在删除后删除最后一条记录后没有崩溃的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

虽然我不会使用相同的方法来实现“无结果”反馈,但我认为您的错误表示在删除最后一个“真实”行时转换中存在问题。

修复它的方法是告诉表在删除最后一行时插入了3行。那个或强制重新加载表格视图[self.tableView reloadData],以确保它不会与过渡混淆。