2011-07-27 12 views
0

このコードでは、プログラム可能な2つのラベルをスクロール可能なビューの各行に追加します。ビューに "label"が問題なく追加されますが、 "infoLabel"最後の行しか表示されません。 数時間を費やしています。 ありがとうございました。最後のラベルのみが表示されます

- (void)refreshList 
{ 
    // remove all the labels from the GUI 
    for (UILabel *label in scrollView.subviews) 
     [label removeFromSuperview]; 
    RootModel *rm = [RootModel sharedModel]; 

    float labelOffset = LABEL_SPACING; // reset the spacing 
    UILabel *infoLabel = [[UILabel alloc] init ]; 

    // repopulate the scroll view with Labels 
    for (UILabel *label in labels) 
    { 
     NSLog(@"%@", label.text); 
     CGRect labelFrame = label.frame; // fetch the frame of label 

     labelFrame.origin.x = LEFT_LABEL_SPACING; // set the x-coordinate 
     labelFrame.origin.y = labelOffset; // set the y-coordinate 
     labelFrame.size.width = scrollView.frame.size.width/3; 
     labelFrame.size.height = LABEL_HEIGHT; // set the height of Label 
     label.frame = labelFrame; // assign the new frame to Label 
     [scrollView addSubview:label]; // add Label as a subview 

     CGRect infolabelFrame = infoLabel.frame; // fetch the frame of label 

     infolabelFrame.origin.x = 10; // set the x-coordinate 
     infolabelFrame.origin.y = labelOffset; // set the y-coordinate 
     infolabelFrame.size.width = scrollView.frame.size.width/3; 
     infolabelFrame.size.height = LABEL_HEIGHT; // set the height of Label 
     infoLabel.frame = infolabelFrame; // assign the new frame to Label 

     NSString *key = label.text; 
     NSLog(@"%@", key); 
     infoLabel.text = [rm.rLevels valueForKey:key]; 
     NSLog(@"%@ %@", infoLabel.text, key); 

     infoLabel.frame = infolabelFrame; // fetch the frame of label 
     [infoLabels addObject:infoLabel]; 
     [scrollView addSubview:infoLabel]; // add Label as a subview 

     // increase the offset so the next button is added further down 
     labelOffset += LABEL_HEIGHT + LABEL_SPACING; 
    } // end for 
} // end refreshList 

答えて

2

あなたはinfoLabelの単一のインスタンスを作成し、ループの各反復でそのframeをリセットしています。複数のラベルを作成する場合は、ループの各繰り返しでラベルを割り当てて初期化する必要があります。サブビューとして追加した後に割り当てるラベルの所有権を放棄していることを確認してください。

+0

あなたの言うことは完璧です。だから私は次のステートメントを変更しました:[scrollView addSubview:[infoLabels objectAtIndex:[infoLabels count] -1]]; //ラベルをサブビューとして追加します。 infoLabelsがラベルのようにインターフェースに定義されている場所。まだ同じ問題です。 – saman01

+0

すみません、私はそれを持っています。私が試してみましょう。 – saman01

関連する問題