0

私はこのメッセージを投稿して、最善のアプローチについての提案を得ています。

ユーザーが使いたいフィールドを選択するプログラムを作っています。リストは次の画面に表の形で表示されます。選択したフィールドに応じて、textFieldsのplaceHolderが変わります。したがって、選択したフィールドを追跡する必要があります。

これまで、次のアプローチを検討してきました。

  1. 2つのアレイ。1つはセルのラベルのリストを格納し、2つ目の配列は1/0値を格納します。1:フィールドが選択されている、0:選択されていない。したがって、配列1からフィールドの名前を取得し、2番目のフィールドからフィールドが選択されているかどうかを取得する必要があります。

  2. フィールドが選択されているかどうかを示す1/0を含む1つの配列。配列をトラバースして、どのplaceHoldersを表示するかを決定します。

  3. NSDictionary:オブジェクト:「フィールドの名前」とキー:1または0が含まれます。

ifステートメントとelseステートメントがたくさんあり、さらにコードには非常に多くの繰り返しがあるため、これらのオプションのどちらも優れたプログラミング手法としては見つかりません。

この問題に取り組むための最良の方法を提案できますか?

ありがとう!

4

2 に答える 2

0

if/elseステートメントがたくさんあると思う理由がわかりません。辞書の配列を使用してこれを行うことができます。各辞書には、フィールド名と選択済みの2つのキーが含まれています。フィールド名はNSStringで、選択されたのはブール値をラップするNSNumberです。次に、cellForRowAtIndexPathに次のようなものがあります。

NSDictionary *cellData = dataArray[indexPath.row];
cell.textLabel.text = cellData[@"field_name"];
if ([[cellData@["selected"] boolValue] == YES) { ... do whatever you do when the cell is selected, like add a checkmark ... }

また、各セルのデータを保持するカスタムデータクラスを作成することも考えられます。ラベル名と選択された性質のプロパティを作成できます(これにより、YES / NOを表すためにNSNumberをラップおよびアンラップする必要がなくなります)。選択された性質に応じて正しいラベルを返すカスタムクラスのメソッドを定義できます。次に、これらのカスタムオブジェクトの配列を作成するだけです。

于 2012-11-20T22:37:00.160 に答える
0

あなたが望むのは、どれが選択されているかを把握することだと思います。番号を使用して、選択されているものをマークアップできます。
3つのフィールドがあるとしましょう:field0 field1 field2そして2進数の数000。選択したらfield1、番号をとしてマークし010ます。&この番号を次の画面に渡すと、すべてのファイルに使用できます。
の場合field0、選択されていないことを意味010 & 000する結果を取得できます。 の場合、どのたてがみが選択されていなくても、結果を得ることができます。 の場合、manesが選択されていない結果を取得できます。0field0
field1010 & 0100field1
field2010 & 1000field2

于 2012-11-21T03:59:28.773 に答える