-2

スクロールビューがあり、スクロールビュー内でプログラムで同じ名前のテーブルを追加し(テーブルの数は必ずしも同じとは限りません)、ループを使用してスクロールに追加します。

私の問題: 私のアプリは最初のテーブルを作成し、そこにデータを入れてから、2 番目のテーブルを作成してデータを入れますが、2 番目のテーブルにデータを入れると、最初のテーブルのデータは同じ名前であるため変更されます。

この問題を解決するにはどうすればよいですか?

for ( int i=0; i<[P1Rows count]; i++) {
    [self AddPricesTable:i];
}


- (void)AddPricesTable:(int)GroupNum{
    self.TableView = [[[UITableView alloc] initWithFrame:CGRectMake(ScrollView.frame.size.width * GroupNum, 0,
                    ScrollView.frame.size.width, ScrollView.frame.size.height) style:UITableViewStylePlain] autorelease];
    self.TableView.backgroundColor = [UIColor blackColor];
    self.TableView.dataSource = self;
    self.TableView.delegate = self;

    P1Dict = [P1Rows objectAtIndex: GroupNum];
    NSLog(@"%@", [P1Dict objectForKey:@"Group"]);
    P2URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://xxx.co/SFP/?Q=P2&V=%@",
            [[P1Dict objectForKey:@"Group"] stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]];
    NSLog(@"%@", P2URL);
    P2JsonString = [[NSString alloc] initWithContentsOfURL:P2URL usedEncoding:Encoding error:&Error];
    P2JsonData = [P2JsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    P2Dict = [[[CJSONDeserializer deserializer] deserializeAsDictionary:P2JsonData error:&Error] retain];
    [self CheckConnect];
    P2Rows = [P2Dict objectForKey:@"SFP"];

    [self.TableView reloadData];

    [ScrollView addSubview:self.TableView];
}
4

2 に答える 2

1

あなたは明らかにここでメモリをリークしています。また、複数のテーブルを用意する必要はありません。1 つのテーブルで十分であり、それを Interface Builder に追加します。

必要なのは、UITabelView のセクションを現在使用しているテーブルの数に設定することだけです。

于 2012-08-12T11:13:29.990 に答える
0

2 つの UITableView 変数を宣言し、それらを 2 つのテーブルへのアウトレットにし、インターフェイス ビルダーにフックし、デリゲートとデータソースを提供する必要があります。

次に、cellForRowAtIndexPath: で次のように言います。

if (tableView == outlet_to_table_ONE){
    //populate the FIRST table as you wish
}
else{
    //else should mean that tableView will be outlet_to_table_TWO (if you have only 2 tables)
    //populate the SECOND table as you wish
}
于 2012-08-12T11:45:52.260 に答える