-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

您显然在这里泄漏了内存。此外,您不需要拥有多个表,只需一个表就足够了,并将其添加到 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 回答