2012-02-16 2 views
3

IBで使用されている多くのオブジェクトに同じ動作を適用するためにIBOutletCollectionsを使用しています。これは非常に時間を節約しますが、IBの各オブジェクトとヘッダーファイルで宣言されているIBOutletCollectionを個別に接続するのに時間がかかります。IBOutletCollection - 一度に複数のオブジェクトをフックする

IBで複数のインターフェイスオブジェクトを強調表示し、接続をIBOutletCollectionにドラッグしようとしましたが、それでも一度に1つずつ接続するだけです。一度に多くの人をつなぐ隠された方法はありますか?

ありがとうございました

+0

私はここにいる:私は再帰的にすべてのコントロールを(私はポップオーバーパススルービューのためにこれを使用しますが、それはまた、大量の無効化のために便利です)を収集する必要がある場合にも、同様の技術を使用し

// We have a lot of buttons that point to the same thing. It's a pain to wire // them all in IB. Just find them all and write them up - (void)wireButtons { for (UIView *view in [self.view subviews]) { if ([view isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)view; [button setTitle:[self buttonTitleForTag:button.tag] forState:UIControlStateNormal]; button.titleLabel.lineBreakMode = UILineBreakModeWordWrap; button.titleLabel.textAlignment = UITextAlignmentCenter; if (![button actionsForTarget:self forControlEvent:UIControlEventTouchUpInside]) { [button addTarget:self action:@selector(performSomething:) forControlEvents:UIControlEventTouchUpInside]; } } } } 

同じ質問。質問は古いです。その間、リンゴは解決策を提示しましたか?さもなければ、私はコレクションでの努力を見ません。私は(私の場合は)親ビューを使用し、サブビューセレクタを使用することができます。 – redestructa

答えて

2

ええ、それはあなたが考えるよりも難しいです。私は、bugreporter.apple.comでレーダーをお勧めします。

私のコードでは、私は時々このようなコードでやっていました。私はすべてのボタンのフォントを変更するか、背景色などを変えることにした場合、時間と労力とバグを大幅に削減できます。 IBのレイアウト上の利点をコードの一貫性とともに提供します。

- (NSArray *)controlViewsForView:(UIView *)aView 
{ 
    if (!aView) 
    { 
    return nil; 
    } 

    NSMutableArray *controlViews = [NSMutableArray new]; 
    for (UIView *subview in aView.subviews) 
    { 
    if ([subview isKindOfClass:[UIControl class]] && ! [self viewIsEffectivelyHidden:subview]) 
    { 
     [controlViews addObject:subview]; 
    } 
    [controlViews addObjectsFromArray:[self controlViewsForView:subview]]; 
    } 

    return controlViews; 
} 

- (BOOL)viewIsEffectivelyHidden:(UIView *)view 
{ 
    if (! view) 
    { 
    return NO; 
    } 
    if ([view isHidden]) 
    { 
    return YES; 
    } 
    return [self viewIsEffectivelyHidden:[view superview]]; 
} 
+0

ありがとうございます。私はAppleにバグレポートを提出しました。 – beev

関連する問題