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)を別のView Controllerに渡し、そのtableview(view controller)に選択した行のみを表示するにはどうすればよいですか?

4

1 に答える 1

0

新しいView Controllerを作成するとき

MyNextViewController *myNextViewController = [MyNextViewController alloc] init];

次のView ControllerにselectedIndexPathsのパラメータを取るメソッドがあります。

[myNextViewController setIndexesOfRowsToPresent:self.selectedIndexPaths];

新しいView Controllerでは、テーブルにデータを入力するために使用されるデータモデルがあると仮定して、これを使用して必要なことを行います。

または、元のビュー コントローラーで、selctedIndexPaths の配列を作成する代わりに、次のビュー コントローラーで表示されるデータの別の配列を作成し、その配列を渡します。そうすれば、新しいView Controllerで操作を行う必要はありません。表示するデータを渡すだけで、viewWillAppear でテーブルが自動的に正しく表示されます。

[myNextViewController setData:mySelectedDataArray];

または、新しいView Controllerのalloc initに入れることをお勧めします。

于 2012-11-07T21:26:04.267 に答える