-3

だから私は動的にロードされたラベルの束を持っています..

どれだけあるかわからないので、それぞれに同じ名前が付いています..

ラベルの1つのテキストを変更する別の方法(ラベルを作成したものではない)がありますが、それを実行すると、最後に作成されたラベルのみが変更されます..

特定のタグが付いているものを変更する必要があります..

このウェブサイトはまだ私を失望させていません。

4

2 に答える 2

2

表示するコードがないので、推測する必要があると思います。

私が理解したのは、あなたがUILabelsurコードでDynamicを作成していて、それらにアクセスしたいということです。あなたはすべて同じ名前を持っているので、新しいを作成するたびUILabelsに前の名前を失う可能性があります。したがって、作成した数を追跡するには、それらを配列に追加する必要があります。ファイルでを宣言し、 uで次のように割り当てるようにしますUILabelUILabelUILabelNSMutableArrayviewController.hviewDidLoad

arrForLabels = [[NSMutableArray alloc]init];

なのでNSMutableArray、オブジェクトを追加できます。

したがって、uを作成するときは、インスタンスの配列UILabelにも同じものを追加するようにしてくださいUILabel

[arrForLabels addObject:yourLabel];

アレイを試して、そのコンテンツを確認できNSLogます。

今やらなければならないのは、そのような弱いリンクを作成することだけです

UILabel *tempLabel = [arrForLabels objectAtIndex:1];

tempLabelテキストUILabelを変更することになります

tempLabel.text = @"My New Text";

それはうまくいくでしょう。問題があればお気軽にお問い合わせください。

于 2012-07-20T11:56:41.973 に答える
2

self.myLabel は複数のラベルに接続できないため、最後に作成されたラベルの参照が含まれます。毎回新しいラベルを作成する必要があり、クラス プロパティでそれらを追跡することはできません。タグでラベルにアクセスする必要があります。 .

各ラベルにタグを設定できます。以下はサンプルコードです。

 for(int i=0; i< numberOfLabels; i++)
{
    UILabel *label = [[UILabel alloc] init];
    label.tag = i; // do not use tag 0 here.. u can use i+1, or i+100.. something like this.
    [self.view addSubview:label];
}

ラベルにアクセスするには、

UILabel *label = (UILabel*)[self.view viewWithTag: labelTag];
于 2012-07-20T11:53:45.550 に答える