滑动以删除不会删除基础数据结构

时间:2014-02-06 20:23:19

标签: ios uitableview theos

我下面的代码使IOS滑动删除功能并删除该行。问题是底层数据结构没有被删除。我有3个单元格,Google-Bing-Yahoo,如果我删除Google,则删除单元格但Bing会向上移动,变为indexPath.row 0并继承Google过去的行为。我在哪里错过了“嘿删除对这个单元格的动作”的电话。或者也许这就是我分配细胞的方式?我应该使用标签吗?

////My Array
someData = [[NSMutableArray alloc]init];
    [someData addObjectsFromArray:[NSMutableArray arrayWithObjects: @"Google", @"Bing", @"Yahoo", nil]];


////Allow cell editing & remove data
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

// Remove the row from data model
[someData removeObjectAtIndex:indexPath.row];

// Request table view to reload
[tableView reloadData];

}


////Cell Chosen Action
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


        if(indexPath.row == 0) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://google.com"]];
}
        if(indexPath.row == 1) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://bing.com"]];
}
        if(indexPath.row == 2) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://yahoo.com"]];
}

1 个答案:

答案 0 :(得分:1)

你的didSelectRowAtIndexPath说无论如何,第0行打开google。当你删除谷歌时,第0行现在是bing,但你仍然打开谷歌。做类似的事情:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: [NSString stringWithFormat:@"http://%@.com", [someData objectAtIndex:indexPath.row]]]];
}

基本上你会用数组中的名字形成url,不需要任何if语句和混淆。