UITableView在点击的单元格下方插入行



我非常困惑。我看了好几个帖子,试图找出如何做到这一点。我想做的是检测UITableViewCell何时被点击,然后用菜单在该行的正下方插入一行。

我实现了检测点击的项目,但我不知道如何在刚刚点击的行的正下方插入新行。

这是处理抽头单元格的方法。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
indexPath = nil;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
Locations *location = nil;

if (self.searchDisplayController.active) {
indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
location= [self.searchResults objectAtIndex:indexPath.row];
NSLog(@"location : %@" ,location.locationName);
[self.locations addObject:@"New Entry"];

[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:YES];
//[self.tableViewForScreen insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
} else {
indexPath = [self.tableView indexPathForSelectedRow];
location = [self.locations objectAtIndex:indexPath.row];
NSLog(@"location : %@" ,location.locationName);
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:YES];
}

[tableView deselectRowAtIndexPath:indexPath animated:YES];

// set the tapped item pointer equals to the locations mutable array variable wich essentially is the
//  data source of the table view.
//Locations *tappedItem =[self.locations objectAtIndex:indexPath.row];
//access the location name and print to log.

}

很明显,它在插入的部分失败了

[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:YES];

有人能帮我一把吗?

错误如下。

原因:'无效更新:节0中的行数无效。这个更新后包含在现有节中的行数(154)必须等于之前该节中包含的行数更新(154),加上或减去插入或删除的行数从该部分(插入1,删除0)加上或减去数字移入或移出该节的行数(0移入,0移出)。'

这是我看过的一篇帖子。UITableView操作行http://adcdownload.apple.com//videos/wwdc_2011__sd/session_125__uitableview_changes_tips_tricks.m4v

问题是您调用了insertRowsAtIndexPath:,但没有首先更新数据源以包含新行的数据。

当在搜索表中选择一行而不是在主表中选择时,这样做似乎是正确的。

首先不要使用

indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];

您可以从方法参数中获取indexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

您似乎遇到了问题,因为您正在调用insertRowsAtIndexPaths,但没有更新数据源。

相关内容

  • 没有找到相关文章

最新更新