4

// forループでテーブルビューを作成しています。一度ループした後、tableviewデリゲート/データソースメソッドを呼び出す必要があります。しかし、ここでは、メソッド(デリゲート/データソース)がループの終了後に呼び出しています

//:ページコントローラーに基づいて、すべてのテーブルをスクロールビューで表示しています

//これが私のコードです

for(int i=0; i < 10; i++)
{
table_obj[i] = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 700, 500)];
            table_obj[i].separatorStyle = UITableViewCellSeparatorStyleNone;
            table_obj[i].separatorColor = [UIColor clearColor];
            table_obj[i].delegate = self;
            table_obj[i].dataSource = self;
            table_obj[i].backgroundColor = [UIColor clearColor];
            [scrollview addSubview:table_obj[i]];

            [table_obj[i] reloadData];
}

//データは10番目のテーブルにのみ読み込まれます。すべてのテーブルにあるわけではありません

4

3 に答える 3

2

table_obj[i] = itag( )を使用して、デリゲートがどのtableViewによって呼び出されているかを判断する必要があると思います。

例えば ​​:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        switch (tableView.tag) {
        case 0:
            //do something
            break;
        case 1:
            //do something
        break;

        ... ...

        default:
            break;
    }
}
于 2013-03-20T12:22:48.033 に答える
2

これは、delegate / dataSourceをselfに設定すると、ループ内でオーバーライドされ、配列の最後の1つが現在のdelegate/dataSourceになるためです。

tableViewsで「タグ」を設定してから、コールバックでtableViewのタグに基づいて操作を行うことができます。

もう1つのオプションは、tableViewの配列をループして現在のビューを取得することですが、これはあまり効率的ではないため、最初のオプションの方が優れていると思います。

于 2013-03-20T12:23:13.767 に答える
2

その後、テーブルをリロードする場合は、正常に機能するはずです。

あなたが追加しているビューは、あなたの(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -mehodに追加するのではなく、カスタムセルの概念を使用してみてください。あるテーブルビューから別のテーブルビューに移動するときはいつでも、テーブルをリロードします。

カスタムセルチュートリアル。

于 2013-03-21T07:14:31.880 に答える