UITableViews 用の Interface Builder の使用
-
02-07-2019 - |
質問
私は iPhone 開発の学習プロセスのかなり初期段階にいます。いろいろな部分に頭を悩ませています。現在、基本的な NavigationController テンプレートを取得し、いくつかのテキスト フィールドを含む単純なグループ化されたテーブル ビューを作成しようとしています。私ができないことは、Interface Builder を取得して、UITableViewCell を UITableView にドロップして、Cell にテキストフィールドを追加できるようにすることです。これは可能でしょうか(UITableViewCellがドラッグ可能なコントロールであるという事実を考慮する必要があるようです)?
そうでない場合、それはすべて自分で記述する必要があるコードということですか?
解決
Interface Builder を使用してセルを作成できますが、テーブル ビューの子ではなく、トップレベルのオブジェクトにする必要があります。次に、このセルをビューコントローラーで返すことができます tableView:cellForRowAtIndexPath: 関数。
必ずセルに 識別子 Interface Builder で同じ識別子を使用します。 デキューReusableCellWithIdentifier: (これがどのように機能するかについては、サンプル コードを参照してください。セルが再利用されるという考え方です。OS は、一度に画面に収まる数のセルのみを割り当てます。メモリを節約する賢い方法。)
他のヒント
Boot To The Head の手法には注意してください。適切に処理しないと漏れてしまいます IBOutlets
. 。コードを投稿せずに(NDA)、私の能力の限りこれを説明しようとします。IB を使用してセルを作成する予定がある場合は、 UITableViewCell
それは独自の Xib ファイルです。ファイルの所有者を自分のものとして設定します UIViewController
サブクラス(または UITableController
)。電話してください IBOutlet
何かのようなもの UITableViewCell *cellFactory
. 。の中に UITableViewDataSource
方法 tableView:cellForRowAtIndexPath:
次の疑似コードを実行します。
- IB で設定した識別子を使用してセルをデキューしてみます
- 成功したら完了です。セルだけを使用してください
- それ以外の場合は、新しいセルを作成する必要があります。使用
[NSBundle mainBundle] loadNibNamed:owner:options:
そこに適切な xib ファイルを使用してメソッドを実行します。これにより、cellFactory ivar に新しいセルが入力されます。ここからが厄介な部分です。 - セット
cell = cellFactory
それから解放しますcellFactory
誤って再度使用しないように、nil に設定してください。これで、携帯電話を通常どおり安全に使用できるようになりました
残念ながら、実際にはそのようには機能しません。テーブルビュー内のセルは実行時にデリゲートによって生成されます。ただし、非常に単純なコードであることがわかります。テーブルビューのサンプル コードを確認してください。従うのは非常に簡単です。