2009-07-04 4 views
0

私は、サーバーデータと対話し、それに応じてデータベースの結果を表示するアプリケーションを作成しています。私はCocoaにクライアントサイドのアプリを書いています。データベースの結果はココア

例:ユーザーがWebアプリケーションにログオンします。彼らには、Webレポートを提出するためのオプションがあります。選択肢:1行と複数行。彼らは、入力したいさまざまな変数について、これらのフィールドの数を選択できます。これは、後で使用するためにMYSQLデータベースに保存されます。

例(パート2):クライアント側のアプリケーションは、MYSQLデータベース内のデータを取得して表示します。問題は、それが可変数のフィールドであり、可変数の型であることです。

つまり、NSSecureTextField、NSTextFieldなどを表示するかどうかをデータベースに保存し、それを画面に表示します。先ほど指摘したように、問題は、要素の数とタイプを選択できるということです。そのため、これをコードにどのように転送するかについてはあまりよく分かりません。

私はオンラインのInterface Builderを構築しようとしていません。可変量のフィールドとこれらのフィールドのさまざまなタイプを持つデータを入力するだけのオンライン方法です。私はオンラインシステムを作成しましたが、私はクライアント側の部分に問題があります。

ご協力いただければ幸いです!

答えて

1

私はあなたが求めていることを理解していません。ユーザーが望むNSTextFieldsの数を把握してから、forループを作成するのが少し難しいでしょうか?あなたはおそらく、テキストフィールドを追跡したいと思うので、私はおそらく、このようにそれを行うだろう:

NSMutableDictionary * interfaceElements = [[NSMutableDictionary alloc] init]; 

for (NSInteger i = 0; i < numberOfTextFields; ++i) { 
    //this is just to make a frame that's indented 10px 
    //and has 10px between it and the previous NSTextField (or window edge) 
    NSRect frame = NSMakeRect(10, (i*22 + (i+1)*10), 100, 22); 
    NSTextField * newField = [[NSTextField alloc] initWithFrame:frame]; 
    //configure newField appropriately 
    [[myWindow contentView] addSubview:newField]; 
    [interfaceElements setObject:newField forKey:@"someUniqueIdentifier"]; 
    [newField release]; 
} 

もちろんの辞書には、この方法にローカルではないだろうが、私はあなたのアイデアを得ると思います。

また、NSMatrixを強制的に自動レイアウトすることもできます。

iPhone向けのクライアントアプリケーションを作成する場合は、Settings Application Schema referenceにインスピレーションを求めることを強くおすすめします。あなたがこれに慣れていないならば、簡単な紹介があります:iPhoneは、開発者が自分の好みのエリアを実際のアプリから設定アプリに移動させることができます。これは、設定バンドルを作成し、非常に特殊な方法でplistを作成することによって行われます。 Settings.appはそのplistを検出し、解析し、それに含まれる定義に従ってインターフェイスを構築します。あなたは、スイッチ、テキストフィールド(安全なもの)、スライダ、グループ、およびいくつかの種類のインタフェース要素を行うことができます。

+0

デーブ: ご返信ありがとうございます。あなたにとっては些細なことかもしれませんが、以前は自分のレイアウト用にInterface Builder以外のものを使用していませんでした。私はあなたが画面上にNSTextFieldsなどを「ダイナミックに」表示することが自分の質問になるとすぐに思います。あなたのコメントのおかげで、私は基本的にコード内で何が起こっていると思います...しかし、NSMutableDictionaryを画面にどのように描画しますか?おそらく非常に単純な質問(私はそれを謝る)が、私はむしろこの全体の考え方に新しいです。これはデスクトップ向けのものですが、今はiPhoneの訴求に感謝しています。 – PF1

+0

(多分)あなたの投稿を間違って読んでいるかもしれませんが、既にかなり自動化されたレイアウトではありませんか? もう一度、ご協力いただきありがとうございます。 – PF1

+0

@ PF1謝罪;私は、IBのみのインターフェースからのものについては、コードを使ったものを作ることは依然としてブードゥーのビットであることを理解しています。 =)NSMDを画面に描画する場合、あなたはそうしません。これは「[[myWindow contentView] addSubview:newField]」行がやっていることです。NSMDは、(IBOutletのコレクションのような)フィールドへの参照を維持するだけで、後でフィールドから情報を引き出すことができます。そして、はい、これはレイアウトでは幾分自動化されています。つまり、NSTextFieldsを重ねて配置しています。しかし、あなたが画面に収まるよりも多くのテキストフィールドを持っているなら、NSScrollView –

関連する問題