0

8 つのラベルがあり、それらをループしたいのですが、運がありません。

これは私が試したものです。

for (int i; i = 0; i < 10; i++)
{
  double va = [varible1.text doubleValue] + i;
  int j = 0 + I 

  label(j).text= [[NSString alloc]initWithFormat:@"%2.1f", va];
}

これはエラーになります。私のラベルはこのように命名されています label0, label1, label2

どんな助けでも大歓迎です。

4

4 に答える 4

3

label(j)label0、label1 などと同等ではありません。

ラベルの NSArray を作成する必要があります[arrayOfLabels objectAtIndex:j]。これが何を意味するのかわからない場合は、NSArray に関するドキュメントをお読みください...

于 2009-08-10T04:27:17.757 に答える
2

おそらく-viewDidLoadで、すべてのラベルをC配列に追加する必要があります

UILabel* labels[] = { label0, label1, label2, ... };

(構文については完全にはわかりません)そして、次のようにアクセスします

labels[i].text = ...

ちなみに、ここでメモリリークしていると思います:

labels[i].text = [[NSString alloc]initWithFormat:@"%2.1f", va];

initWithFormat: 保持カウントが 1 の文字列を返します。labels[i].text はその値を再び保持します。ラベルのテキストを設定したら、文字列を解放する必要があります。私はおそらくここでそれを自動解放するでしょう:

labels[i].text = [[[NSString alloc]initWithFormat:@"%2.1f", va] autorelease];

または stringWithFormat (自動解放された文字列を返す) を使用します。

labels[i].text = [NSString stringWithFormat:@"%2.1f", va];
于 2009-08-10T04:34:07.023 に答える
0

ラベルを配列に入れることができない、または入れたくない場合は、タグ フィールドをインデックスとして使用して UIView を反復処理できます。それらにインデックス番号を保存し (IB またはプログラムによって)、(UIView *)viewWithTag:(NSInteger)tag を使用して各ラベルを取得します。

以下を参照してください( theView をラベルが存在するビューに設定します):

for (int i; i = 0; i < 10; i++)
{
  double va = [varible1.text doubleValue] + i;

  UILabel * label = [theView viewWithTag: i];
  label.text= [[NSString alloc]initWithFormat:@"%2.1f", va];
}
于 2009-08-10T07:57:20.640 に答える