1

これはばかげた質問かもしれませんが、私はiPhone開発の経験があまりありません。

l1、l2などの5つのラベルがあるとします。たとえば、l1のフォントサイズやl2の色を個別に変更できるようにしたいのですが、これは簡単です。ただし、[l1 setHidden:true]、[l2 setHidden:true]などを実行せずに、それらをグループとして処理できるようにしたい場合もあります。たとえば、すべてを一度に非表示にします。

これらのアイテムを「グループ化」する方法はありますか?おそらくforループや配列、または私が知らない何かにありますか?

お時間をいただきありがとうございます。

4

3 に答える 3

3

ダニエルからのコメントが言ったように、NSArrayでこれを行うことができます。

例(テストされていない、私の心から-うまくいくはずです):

// Somewhere in your init method - assuming you have three labels
NSArray *labelArray = [[NSArray alloc] initWithObjects: l1, l2, l3, nil];

// Somewhere in your code
- (void) hideAllLabels
{
  for (UILabel *label in labelArray)
  { 
    [label setHidden:TRUE];
  }
}
于 2012-06-16T14:28:16.963 に答える
1

これを行う最もクリーンな方法は、IBOutletCollectionを使用することです。これはアウトレットのような新しいリンクです。アウトレットコレクションにビューを追加する場合にのみ、システムはそれらのオブジェクトの配列を設定し、コレクションにアイテムを追加すると、それらは自動的に配列に追加されます。とても良いですね。

于 2012-06-17T01:32:30.030 に答える
0

それらがすでにグループ化されている別の方法があります。その中のアイテムのスーパービューを呼び出すと、それらのアイテムの配列が返されます。そのリスト内の特定の項目を決定する必要がある場合は、クラスを呼び出すか、タグを割り当てて反復でそれを検出できます。

NSArray *itemArray = [myView subviews];
for (UIView *thing in itemArray) {
  if (thing.tag == 100) {
    [thing setBackgroundColor: [UIColor clearColor]];
  }
}
于 2012-06-16T16:59:13.283 に答える