Interface Builder を使用して iPhone SDK コントロール (UISlider など) をバインドするにはどうすればよいですか?
通常の Cocoa アプリケーションとは異なり、Interface Builder を使用して iPhone アプリ XIB を開くと、バインディング タブが表示されないように見える
Interface Builder を使用して iPhone SDK コントロール (UISlider など) をバインドするにはどうすればよいですか?
通常の Cocoa アプリケーションとは異なり、Interface Builder を使用して iPhone アプリ XIB を開くと、バインディング タブが表示されないように見える
CocoaバインディングはiPhoneSDKでは使用できません。Macで行っていたのと同じように、すべてを「手作業で」行う必要があります。
viewcontroller .h ファイルでコントロールを IBOutlet として宣言します。IBで、ビューのファイルの所有者をビューコントローラークラスとして設定します(ファイルの所有者を選択し、インスペクターウィンドウで(i)ボタンをクリックして、クラスをビューコントローラーとして設定します)ファイルの所有者が選択された状態で、青いボタンをクリックしますインスペクタ ウィンドウの白い矢印。UISlider の IBOutlet をビューの UISlider にバインドします。
スライダーが変化したときにスライダーの値を取得するには、viewcontroller で戻り値の型 IBAction を持つメソッドを作成します。インスペクタ ウィンドウで、これを UISlider に接続すると、複数のオプションから選択できます。「値が変更されました」オプションを選択します。これで、スライダーの値が変更されるたびに IBAction メソッドが呼び出されます。
それが役立つことを願っています。
iPhone で cocoa バインディングがサポートされていないことは、Apple の dev centerに記載されています。これは、iPhone 開発を開始する Cocoa 開発者にとって一般的に役立つページです。
ただし、Key Value Observation (KVO) は引き続き完全にサポートされていますが、バインディングで行っていた部分を手動で行う必要があります。これにより、NSArrayController をフックするだけの Mac OS X よりも、たとえば UITableView で並べ替えられた動的な項目リストを表示するのがはるかに苦痛になります。SOに関するこの質問も参照してください。