0

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

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

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

つまり、データベースは基本的に、NSSecureTextField、NSTextFieldなどを表示するかどうかを格納し、それを画面に表示します。上で指摘したように、問題は、必要な要素の数とタイプを選択できることです。したがって、これをコードに転送する方法がよくわかりません。

そして明確にするために、私はオンラインのInterfaceBuilderを構築しようとはしていません。可変量のフィールド、およびこれらのフィールドのさまざまなタイプを持つデータを入力するための単純なオンライン方法。オンラインシステムを作成しましたが、クライアント側で問題が発生しています。

どんな助けでも大歓迎です!

4

1 に答える 1

1

あなたが何を求めているのかよくわかりません。ユーザーが必要とする NSTextField の数を把握し、それらを作成するために少し 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 用のクライアント アプリケーションを作成している場合は、インスピレーションを得るために設定アプリケーション スキーマのリファレンスを参照することを強くお勧めします。これに慣れていない場合は、ここで簡単に紹介します。iPhone では、開発者が設定領域を実際のアプリから設定アプリに移動できます。これは、設定バンドルを作成し、非常に具体的な方法で plist を構築することによって行われます。その後、Settings.app はその plist を検出して解析し、含まれている定義に従ってインターフェイスを構築します。スイッチ、テキストフィールド (セキュアなものも含む)、スライダー、グループ、およびその他のいくつかの種類のインターフェイス要素を実行できます。

于 2009-07-05T17:05:55.083 に答える