0

谁能解决我的问题。

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

        [tableView deselectRowAtIndexPath:indexPath animated:YES];

        if([self.selectedIndexPaths containsObject:indexPath]){
            [self.selectedIndexPaths removeObject:indexPath];
            NSLog(@"selectedIndexPaths1 :%@",self.selectedIndexPaths);
        } else {
            [self.selectedIndexPaths addObject:indexPath];        
            NSLog(@"selectedIndexPaths2 :%@",self.selectedIndexPaths);          
        }

        [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];    
    }

如何将选定的行(selectedIndexPaths)传递给另一个视图控制器,并且 tableview(视图控制器)只显示选定的行?

4

1 回答 1

0

当你创建一个新的视图控制器

MyNextViewController *myNextViewController = [MyNextViewController alloc] init];

在下一个视图控制器中有一个方法,它采用 selectedIndexPaths 的参数。

[myNextViewController setIndexesOfRowsToPresent:self.selectedIndexPaths];

在新的视图控制器中,假设您有用于填充表的数据模型,使用它来做必要的事情。

或者,在原始视图控制器中,不是创建一个 selctedIndexPaths 数组,而是创建另一个要在下一个视图控制器中呈现的数据数组并传递该数组。这样,您无需在新的视图控制器中进行任何操作。您只需传递要显示的数据,在 viewWillAppear 上,它将自动正确显示表格。

[myNextViewController setData:mySelectedDataArray];

或者甚至更好地将它放在新视图控制器的 alloc init 中。

于 2012-11-07T21:26:04.267 回答