-1

タッチ対応で編集可能なテキストボックスを多数用意したい。オブジェクトの作成NSArrayUItextFieldこれに最適な方法ですか?はいの場合、どうすれば作成できますか?またはこれを達成するための他の方法を提案します。

4

3 に答える 3

1

それは、あなたが何をしようとしているのかに大きく依存します。コントローラーで使用しているすべてのテキスト ボックスを格納するNSArray方法として (その目的で ivar を作成する代わりに) は問題ありませんが、そのためにUITableView/UITableViewControllerを使用することもできます。

テーブル ビューを使用すると、何の努力もせずにテキスト ボックスの数を増やすことができます。一方で、テキスト ボックスが 1 つの画面領域に表示できるサイズを超えることがないことを保証できる場合、テーブル ビューを使用しても大きな利点は得られないと思います。しかし、私が言ったように、これはあなたが何をしようとしているのかに大きく依存します.

配列オプションを選択する場合は、NSDictionary代わりに を使用することをお勧めします。これにより、名前 (タグを各ビューに関連付ける場合はタグ) で各ビューにアクセスできます。

また、コンテナ ビューでこのgetViewByTag:メソッドを使用して、割り当てたビュー タグに基づいてコンテナ ビューに含まれる任意のビューへの参照を取得できることにも注意してください。したがって、次のことができます。

//-- creating text box:
UITextField* textBox = ....;
textBox.tag = 1;
[self.view addSbview:textBox];

//-- accessing the text box:
UITextField* textBox = [self.view getViewByTag:1];

この意味で、ビューは既にテキスト ボックスのコンテナーとして動作し、テキスト ボックスへのアクセスを提供します。

編集:

実はクロスワードグリッドを作ろうとしている

2 次元の場合、テーブル ビューは除外されていると言えます (不可能ではありませんが、もっと簡単な方法があると思います)。

あなたの質問に関しては、それはすべてクロスワード グリッドがどれほど動的であるかに依存します。行と列の数は常に同じですか? またはユーザーが定義できますか?等

最初のケースでは、 を選択するNSArrayか、上記のように単純にタグ付けを使用します (これにより、メモリ管理も自動化されます)。

それ以外の場合は、検査する可能性がありますUICollectionView

あなたの質問が次の場合: クロスワード パズルを処理するのに適したデータ構造はどれですか? 次に、この投稿を見てください。いずれにせよ、私はこう言います:その種の問題に対する既製の解決策を見つけることを期待しないでください...

于 2013-01-29T11:46:04.950 に答える
0

編集可能なUITableViewセルを含むことは、これを行うための最良の方法です. Apple の開発者サイトには、テーブル ビューを使用して一連の編集可能なテキスト入力を表示するビューを作成する最適な方法を詳述したサンプル コードが多数あります。

于 2013-01-29T11:46:26.317 に答える
0

「n」個のテキスト フィールドを追加する代わりに、UI テーブル ビューを使用することをお勧めします。

于 2013-02-05T05:23:20.743 に答える