iPhone:以编程方式添加具有相同名称的表

时间:2012-08-12 10:57:05

标签: iphone objective-c xcode

我有一个滚动视图,在滚动视图中,我以编程方式添加具有相同名称的表(表计数并不总是相同的数字),然后使用循环将它们添加到滚动中。

我的问题:我的应用程序创建第一个表,将数据放入其中,然后构建第二个表并放入数据,但是当它将数据放入第二个表时,第一个表中的数据会更改,因为它们具有相同的名称

我该如何解决这个问题?

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];
}

2 个答案:

答案 0 :(得分:1)

你显然在这里泄露记忆。此外,您不需要拥有多个表,只需要一个表即可,并将其添加到“界面”构建器中。

您只需将UITabelView中的部分设置为您正在使用的表格数。

答案 1 :(得分: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
}