私はプログラムでラベルを作成しています。残念ながら、私はラベルを更新するたびに新しいインスタンスを作成していることを発見しました。作成する前にUILabelが既に存在するかどうかを確認する方法はありますか?IOS/Objective-C:レイジーロードUILabel
これは、ラベルを作成するために、私の現在のコードです:
UILabel *percentLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, height, 280, 20)];
私は次のようにそれを調整した場合、私はそれはラベルを認識しないというエラーが表示されます。任意の提案のための
for (id percentLabel in self.view.subviews) {
if (![percentLabel isKindOfClass:[UILabel class]]) {
UILabel *percentLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, height, 280, 20)];
}
percentLabel.textAlignment = NSTextAlignmentCenter;
感謝を。
あなたはこのコードをどこに置いていますか? – AdamPro13
今は、%を計算するためにさまざまなことを行う独自の方法です。パーセントを変更するものを変更すると、このメソッドが呼び出されます。 – user6631314
self.viewにサブビューがない場合、ループに入ることなくUILabelが作成され、self.viewにUILabelsではないいくつかのサブビューがある場合、新しいUILabelsが作成され、使用されません。なぜならif条件が存在すると、ラベルインスタンスが解放され、アプリケーションがtextAlignmentプロパティを持たない他のタイプのビューでtextAlignmentを見つけようとしているときにクラッシュするからです(つまり、今あなたのコードで何が起こっているのか)。 self.viewにUILabelビューがある場合は、テキストを揃えます。 – abintom