2011-10-13 3 views
0

私はページングでスクロールビューを実装していますが、うまくいきません。スクロールビューのすべてのビューについて、テーブルビューに特定の値を設定する必要があります。値が正しく受信されても​​、すべてのビューが同一です(最後のビューはスクロールビューのすべてのサブビューのビューです)。私のミスはどこですか?ページングが動作していないUIScrollView OK

は、ここに私のコードです:gammeString,usageString,delaiString,typeString,financementStringは、テーブルビューのセルにいくつかのラベルに設定されるテキストが含まれてい

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    self.vehiculesenvisagesScrollView.pagingEnabled = YES; 
    self.vehiculesenvisagesScrollView.contentSize = CGSizeMake(vehiculesenvisagesScrollView.frame.size.width * [vehiculesEnvisages count], vehiculesenvisagesScrollView.frame.size.height); 
    self.vehiculesenvisagesScrollView.showsHorizontalScrollIndicator = NO; 
    self.vehiculesenvisagesScrollView.showsVerticalScrollIndicator = NO; 
    self.vehiculesenvisagesScrollView.scrollsToTop = NO; 


    vehiculesEnvisagesArray = [[NSMutableArray alloc] initWithObjects:@"Gamme", @"Usage",@"Délai d'echart",@"Type d'achart",@"Financement", nil]; 


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

    NSLog(@"views %@",[vehiculesenvisagesScrollView subviews]); 

    self.pageControlVehiculeEnvisages.numberOfPages=[vehiculesEnvisages count]; 
    self.pageControlVehiculeEnvisages.currentPage=0;  
} 

- (void) loadScrollViewWithPage: (int) page { 

    NSLog(@"%d",page); 
    if (page < 0) return; 
    if (page >= [vehiculesEnvisages count]) return; 

    CGRect frame; 
    frame.origin.x = self.vehiculesenvisagesScrollView.frame.size.width * page; 
    frame.origin.y = 0; 
    frame.size = self.vehiculesenvisagesScrollView.frame.size; 

    UIView *oneview = [[UIView alloc] initWithFrame:frame]; 

    tableViewVehiculesEnvisages=[[UITableView alloc] initWithFrame:CGRectMake(3, 0, 320, 233) style:UITableViewStyleGrouped]; 
    tableViewVehiculesEnvisages.bounces=NO; 
    tableViewVehiculesEnvisages.backgroundColor=[UIColor clearColor]; 
    [tableViewVehiculesEnvisages setDelegate:self]; 
    [tableViewVehiculesEnvisages setDataSource:self];   

    self.gammeString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"gamme"]; 
    self.usageString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"usage"]; 
    self.delaiString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"delai"]; 
    self.typeString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"achat"]; 
    self.financementString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"financement"]; 

    [oneview addSubview:tableViewVehiculesEnvisages]; 

    NSLog(@"gamme%@", self.gammeString); 
    [self.vehiculesenvisagesScrollView addSubview:oneview]; 
    [oneview release]; 

} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellRecherchePartenaires"]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"CellRecherchePartenaires"] autorelease]; 

     cell.backgroundColor = [UIColor clearColor]; 
     cell.selectionStyle = UITableViewCellSelectionStyleGray; 
     cell.backgroundView.opaque = NO; 

     cell.textLabel.backgroundColor = [UIColor clearColor]; 
     cell.textLabel.opaque = NO; 
     cell.textLabel.textColor = [UIColor whiteColor]; 
     cell.textLabel.highlightedTextColor = [UIColor whiteColor]; 
     cell.textLabel.font = [UIFont boldSystemFontOfSize:15]; 

     cell.detailTextLabel.backgroundColor = [UIColor clearColor]; 
     cell.detailTextLabel.opaque = NO; 
     cell.detailTextLabel.textColor = [UIColor whiteColor]; 
     cell.detailTextLabel.highlightedTextColor = [UIColor whiteColor]; 
     cell.detailTextLabel.font = [UIFont systemFontOfSize:15]; 

     if (indexPath.row==0) 
     { 
      gammeLabel = [[UILabel alloc] init]; 
      gammeLabel.frame = CGRectMake(150, -4, 150, 50); 
      gammeLabel.textColor=[UIColor grayColor]; 
      gammeLabel.backgroundColor=[UIColor clearColor]; 
      gammeLabel.text = self.gammeString; 
      [cell.contentView addSubview: [gammeLabel autorelease]]; 
     } 

     if(indexPath.row==1) 
     { 
      usageLabel = [[UILabel alloc] init]; 
      usageLabel.frame = CGRectMake(150, -4, 150, 50); 
      usageLabel.textColor=[UIColor grayColor]; 
      usageLabel.backgroundColor=[UIColor clearColor]; 
      usageLabel.text = self.usageString; 
      [cell.contentView addSubview: [usageLabel autorelease]]; 
     } 

     if(indexPath.row==2) 
     { 
      delaiLabel = [[UILabel alloc] init]; 
      delaiLabel.frame = CGRectMake(150, -4, 150, 50); 
      delaiLabel.textColor = [UIColor grayColor]; 
      delaiLabel.backgroundColor = [UIColor clearColor]; 
      delaiLabel.text = self.delaiString; 
      [cell.contentView addSubview: [delaiLabel autorelease]]; 

     } 

     if(indexPath.row==3) 
     { 
      typeLabel = [[UILabel alloc] init]; 
      typeLabel.frame = CGRectMake(150, -4, 150, 50); 
      typeLabel.textColor = [UIColor grayColor]; 
      typeLabel.backgroundColor = [UIColor clearColor]; 
      typeLabel.text =self.typeString; 
      [cell.contentView addSubview: [typeLabel autorelease]]; 

     } 

     if(indexPath.row==4) 
     { 
      financementLabel = [[UILabel alloc] init]; 
      financementLabel.frame = CGRectMake(150, -4, 150, 50); 
      financementLabel.textColor = [UIColor grayColor]; 
      financementLabel.backgroundColor = [UIColor clearColor]; 
      financementLabel.text = self.financementString; 
      [cell.contentView addSubview: [financementLabel autorelease]]; 

     } 

    } 
    [[cell textLabel] setText: [vehiculesEnvisagesArray objectAtIndex:indexPath.row]] ; 

    return cell; 
} 
+0

データソースメソッドはどのように実装されていますか? (特に 'tableView:cellForRowAtIndexPath:'メソッド) –

+0

私の質問を編集 – Gabrielle

+0

コメントを削除しました – ader

答えて

0

私の問題の解決策を見つけました:私はNSStringの代わりにNSMutableArrayを使用しています。

1
- (void) loadScrollViewWithPage: (int) page { 

NSLog(@"%d",page); 
if (page < 0) return; 
if (page >= [vehiculesEnvisages count]) return; 

CGRect frame; 
frame.origin.x = self.vehiculesenvisagesScrollView.frame.size.width * page; 
frame.origin.y = 0; 
frame.size = self.vehiculesenvisagesScrollView.frame.size; 

UIView *oneview = [[UIView alloc] initWithFrame:frame]; 

tableViewVehiculesEnvisages=[[UITableView alloc] initWithFrame:CGRectMake(3, 0, 320, 233) style:UITableViewStyleGrouped]; 
tableViewVehiculesEnvisages.tag=page; 
tableViewVehiculesEnvisages.bounces=NO; 
tableViewVehiculesEnvisages.backgroundColor=[UIColor clearColor]; 
[tableViewVehiculesEnvisages setDelegate:self]; 
[tableViewVehiculesEnvisages setDataSource:self];   

[oneview addSubview:tableViewVehiculesEnvisages]; 

NSLog(@"gamme%@", self.gammeString); 
[self.vehiculesenvisagesScrollView addSubview:oneview]; 
[oneview release]; 

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellRecherchePartenaires"]; 

if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"CellRecherchePartenaires"] autorelease]; 
} 

    [self setTextt:tableView.tag]; 

    cell.backgroundColor = [UIColor clearColor]; 
    cell.selectionStyle = UITableViewCellSelectionStyleGray; 
    cell.backgroundView.opaque = NO; 

    cell.textLabel.backgroundColor = [UIColor clearColor]; 
    cell.textLabel.opaque = NO; 
    cell.textLabel.textColor = [UIColor whiteColor]; 
    cell.textLabel.highlightedTextColor = [UIColor whiteColor]; 
    cell.textLabel.font = [UIFont boldSystemFontOfSize:15]; 

    cell.detailTextLabel.backgroundColor = [UIColor clearColor]; 
    cell.detailTextLabel.opaque = NO; 
    cell.detailTextLabel.textColor = [UIColor whiteColor]; 
    cell.detailTextLabel.highlightedTextColor = [UIColor whiteColor]; 
    cell.detailTextLabel.font = [UIFont systemFontOfSize:15]; 

    if (indexPath.row==0) 
    { 
     gammeLabel = [[UILabel alloc] init]; 
     gammeLabel.frame = CGRectMake(150, -4, 150, 50); 
     gammeLabel.textColor=[UIColor grayColor]; 
     gammeLabel.backgroundColor=[UIColor clearColor]; 
     gammeLabel.text = self.gammeString; 
     [cell.contentView addSubview: [gammeLabel autorelease]]; 
    } 

    if(indexPath.row==1) 
    { 
     usageLabel = [[UILabel alloc] init]; 
     usageLabel.frame = CGRectMake(150, -4, 150, 50); 
     usageLabel.textColor=[UIColor grayColor]; 
     usageLabel.backgroundColor=[UIColor clearColor]; 
     usageLabel.text = self.usageString; 
     [cell.contentView addSubview: [usageLabel autorelease]]; 
    } 

    if(indexPath.row==2) 
    { 
     delaiLabel = [[UILabel alloc] init]; 
     delaiLabel.frame = CGRectMake(150, -4, 150, 50); 
     delaiLabel.textColor = [UIColor grayColor]; 
     delaiLabel.backgroundColor = [UIColor clearColor]; 
     delaiLabel.text = self.delaiString; 
     [cell.contentView addSubview: [delaiLabel autorelease]]; 

    } 

    if(indexPath.row==3) 
    { 
     typeLabel = [[UILabel alloc] init]; 
     typeLabel.frame = CGRectMake(150, -4, 150, 50); 
     typeLabel.textColor = [UIColor grayColor]; 
     typeLabel.backgroundColor = [UIColor clearColor]; 
     typeLabel.text =self.typeString; 
     [cell.contentView addSubview: [typeLabel autorelease]]; 

    } 

    if(indexPath.row==4) 
    { 
     financementLabel = [[UILabel alloc] init]; 
     financementLabel.frame = CGRectMake(150, -4, 150, 50); 
     financementLabel.textColor = [UIColor grayColor]; 
     financementLabel.backgroundColor = [UIColor clearColor]; 
     financementLabel.text = self.financementString; 
     [cell.contentView addSubview: [financementLabel autorelease]]; 

    } 

[[cell textLabel] setText: [vehiculesEnvisagesArray objectAtIndex:indexPath.row]] ; 

return cell; 
} 



-(void)setTextt:(int)page 
{ 
self.gammeString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"gamme"]; 
self.usageString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"usage"]; 
self.delaiString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"delai"]; 
self.typeString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"achat"]; 
self.financementString=[[vehiculesEnvisages objectAtIndex:page]valueForKey:@"financement"]; 

} 

は、あなたはふてくされソリューションを取得するには、このコードを使用してコードを置き換えます。

は、ここに私のcellForRowAtIndexPath方法です。

+0

私は[self setText:(vehiculesenvisagesScrollView.contentOffset.x/320)]行でエラーが発生します。 – Gabrielle

+0

ああ、私はthere.soの上にページ番号を渡すので、あなたはそこに解決策を得るur側からそれを渡す...! – Dhaval

+0

(vehiculesenvisagesScrollView.contentOffset.x is null) – Gabrielle

関連する問題