2011-12-21 3 views
0

私は3行のビューを持っており、プログラマチックに参照するアウトレットを設定したいと考えています。プログラムによるコンセントの参照の設定

おかげ

+0

「3行」とはどういう意味ですか?これらの行は固定されたクラス( 'UIScrollView'、' UITextField'など)を持っていますか? –

+0

はい、それらはすべてCellWithTextfieldのクラスを持つカスタムuitableviewcellsです – Ondrej

答えて

1

IBOutletは単なるマーカーであるため、Interface Builderは、どのインスタンス変数がペン先のオブジェクトに割り当てられるのかを知っています。アウトレットを自動的に割り当てることについて話すのは実際には意味がありません。その目的はすべて逆のアプローチです。 IBはInterface Builderの略です。

ペン先のオブジェクトをインスタンス変数に割り当てる場合は、ビュー階層をステップして、収集するオブジェクトを特定する方法が必要です。

ビューコントローラのself.viewにアクセスすることによって、ビュー階層をステップオーバーすることができます。ペン先にメインビューのサブビューではないオブジェクトがある場合、そのオブジェクトにアクセスすることはできません。これらのオブジェクトを取得するための組み込み機能に頼るのではなく、UINibでペン先を読み込むことができます。

必要に応じていくつかの方法でオブジェクトを識別できます。 Interface Builderのビューのtagプロパティに整数を割り当てることができます。階層の特定のポイントにあることがわかっているビューを見ることができます。特定のタイプのビューを見ることができます。または、メインビューのサブクラスUIButtonを偶数タグと組み合わせて組み合わせることもできます。

Interface Builderでビューをレイアウトする場合、ほとんどの場合、インターフェイスビルダーを使用してアウトレットにビューを割り当てるだけです。

0
(any pointer) = [[self.view subviews] objectAtIndex:(object's index)]; 

は、オブジェクトのIDがわからいけません。インターフェイスビルダのIDインスペクタで見つけようとする

+0

技術的には真実ではありません...あなたの '-viewDidLoad'では、ビューのサブビューをループし、ローカル変数をクラスまたはいくつかのそれらに含まれるプロパティ)。 –

+0

ああ、そうです。それについてfogot。一定 – SentineL

0

ビュービューのセルを左から右に並べるには、次のようにします。

NSMutableArray *myCells = [[NSMutableArray alloc] initWithCapacity:NUMBER_OF_CELLS]; 
NSArray *allSubviews = [theView subviews]; 

for(NSView *aSub in allSubviews) { 
    if([aSub isKindOfClass:[MyCustomCellViewClass class]]) { 
     [myCells addObject:aSub]; 
    } 
} 

// Here you can sort your found cells with their origin's x values. 
// -[NSMutableArray sortUsingFunction:context:] can help you with that. 
// Do what you want to do 
[myCells release]; 
関連する問題