2012-01-28 10 views
0

Objective-C/Cocoa Touchの学習を始めました。私はすぐにビューの作成を可能にするアプリケーションに取り組んでいます(この問題のために、あるボタンをクリックするとボタンとラベルが現在のビューに追加されると仮定します)Objective-Cのダイナミックアウトレット

したがって、ユーザこの '作成ボタン'をクリックすると、新しいボタンが表示され、現在のビューにラベルが追加されます。ユーザーが新しく作成されたボタンをクリックすると、新しく作成されたラベルのテキストがに変更されます。今私は実行時にボタンを作成するときにボタンにIBActionを割り当てることができますが、新しいラベルをアウトレットに関連付ける方法がわかりません。

さらに、できるだけコードを小さくしたいが、これがどうなるか見ていない。 C#では

switch(tag) 
{ 
    case 1: 
    //label1.text = @"foo"; 
    break; 

    case 2: 
    //label2.text = @"foo"; 
    break; 
    //etc 
} 

:私は本当にビューのコントロールを識別できる唯一の方法は全く役に立たない自分のタグプロパティである私の知る限りので、私はこのように見て終わるのイベントハンドラ(擬似コード)を持つことになります私は、(eはCommandEventArgsであると仮定すると、すべてのボタンは、このイベントに配線、およびのCommandNameは、私たちが更新したいラベルのIDが含まれている)、このような何かを行っている可能性:

Label lbl = (Label)panel1.FindControl(e.CommandName); 
    lbl.Text = "foo"; 

をだから私の質問は

です
  • 実行時にアウトレットを割り当て/作成し、指定されたラベルにアソシエートすることは可能ですか?
  • スイッチを使用する以外にどのラベルを使用するべきかを判断する良い方法はありますか?

ありがとう!

答えて

4

IBOutletsの目的は、一般に、Interface Builderで作成したものをコード内のインスタンス変数に関連付けることです。まず、ビューでコードを作成しているので、インスタンス変数に参照を格納し、IBOutletsについて心配する必要はありません。

+0

ありがとうございます。それはかなり簡単です。 – dparsons

0

お持ちの場合:

UILabel *localVariableForLabel = ...some label just created... 

をそして、あなたはコンセントにそれを保存したい「instanceVariableForLabel」あなたは、キー値コーディングを使用することができます。したがって:

他のNSStringを渡します。これはまさにNIBをロードするときにCocoaが行うことであり、コンセントがキーバリューコーディングに準拠している必要があります。

新しいコンセントをつくることが何を意味するのかはっきりしませんが、ラベルをどこかに置いて後で名前でアクセスできるようにしたい場合は、おそらくNSDictionaryがお探しのものでしょう。

関連する問題