1

このチュートリアルの助けを借りて。. . .

UITableViewController (参照用に MainTableVC と呼ぶことができます) を作成しました。これは、各セクションに単一の行があり、この UITableViewController(MainTableVC) のすべてのセルを UITableView (参照用に UITableViewOfMainTableVCell と呼ぶことができます) にしました。

UITableViewOfMainTableVCell {* UITableViewCell ではなく UITableView } のセル/行を回転させて、UITableViewOfMainTableVCell のセルを水平方向にスクロールできるようにしました。

今私のUIはこのように見えます.10のセクションを持つテーブルがあります.各セクションには1つの行/セルがあり、この行/セルには水平にスクロールできるいくつかの行/セルがあります

また、UITableViewOfMainTableVCell のカスタム セルで allowMultipleSelections を有効にしました

ここI wanted to keep track of selected indexes of selected rows で、NSArray を取得し、UITableViewOfManiTableVCcells のデリゲート メソッドを使用して indexPaths を保存しました。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *selectedIndexesOfOneRow = [NSMutableArray arrayWithArray:[tableView indexPathsForSelectedRows]];
NSLog(@"number of selected Indexes = %d",[selectedIndexesOfOneRow count]);
}

-(void)tableView:(UITableView *)tableView didDeSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *selectedIndexesOfOneRow= [NSMutableArray arrayWithArray:[tableView indexPathsForSelectedRows]];
NSLog(@"number of selected Indexes = %d",[selectedIndexesOfOneRow count]);
}

私の問題:-

MainTableVC の行/セルで 4 つのセル/行を選択した場合、NSMutableArray *selectedIndexesOfOneRow は正しいカウントを持ちますが、MainTableVC の別のセクションで別の行のセルを選択し、前のセルを選択したままにすると、カウントは最初から始まります。

問題はindexPathsForSelectedRowsにあります.MainTableVC NSMutableArrayの各セクションの行ごとに個別のUITableViewがあるため、単一のUITableViewの選択された行のみを追跡します.異なる行からセルを選択すると、NSMutableArrayは常にリセットされます.

私の質問

すべての行/セルが同じ UITableView デリゲート メソッドを呼び出すため、どうすればそれを防ぐことができますか? セルの選択されたすべてのインデックスを UI 全体に格納したい

配列の配列を作成して、さまざまな異なるインデックスのインデックスを格納することはできますが、どうすればそれらを異なる方法で取得できますか

「ヒント」私は MainTableVC でこのようなことを行うことができます。MainTableVC の Cell 内に tableView があるので、NSArray *array = [cell.tableView indexPathsOfSelectedIndex] を配置できますが、これを MainTableVC のどのデリゲート メソッドに配置する必要がありますか? 、またチェックしました。 MainTableVC(UITableViewController) の行全体を選択していないため、そのデリゲート メソッド didSelectRowAtIndexPath および didDeSelectRowAtIndexPath が呼び出されることはありません。

4

2 に答える 2

1

tableView にタグを割り当ててから、タグをチェックしてすべての tableView を区別することができます。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView.tag==1) {
        //Do what ever you want with table having tab =1
    }else if (tableView.tag==2) {
        //Do what ever you want with table having tag =2
    }
}
于 2013-10-15T09:58:43.707 に答える