1

ハードコードされたデータを使用したテーブル ビューの設定について質問があります。DATA MODELレイヤーからではなく、ハードコードされた情報として保存されたデータを表示する必要がある場合、開発者は状況に直面することがあります。

つまり、たとえば、設定画面を作成すると、次のような UITableViewCell が存在する可能性があります。

CustomTableViewCellName - 構成データ: プレースホルダー名/姓、アイコン。

CustomTableViewCellPhone - 構成データ: 電話のプレースホルダー、アイコン。

CustomTableViewCellLogout - 構成データ: ログアウト/サインアウトのテキスト、アイコン。

3 つのテーブル ビュー セクションがあり、各セクションには、さまざまなケースの例として上で説明した 5 つの異なるセルが含まれているとします。

これらすべてのセルを

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch (indexPath.section)
    ..... A LOT OF CASES THAT CONFIGURE EACH CUSTOM CELLS

ご覧のとおり、ラベル、テキストビュー、画像ビューなどのデフォルトデータとして UITableViewCell に保存されるプレースホルダーとアイコン画像のみのデータモデルはありません。ここではモデルについては言いません。たとえば、ユーザーを保存するモデル USER についてです。名前、姓など。デフォルトのデータをどこかに、おそらく辞書に保存する必要があるということです。実際には、プレースホルダーは単なるプレースホルダーですが、TEXT があり、TEXT はデータです =)

この場合、ビューのデフォルト状態を構成するためのデータと、たとえばモデル USER として使用するデータがあります。

私が心配しているのは、大きなSwitchと非常に大規模なView Controllerがあることです。

indexPath.row を使用して、スイッチでセクションを表すいくつかのメソッドを作成したいと思います。

 - (UITableViewCell *)cellsForSection1:(NSIndexPath *)ip
 - (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip
 - (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip

これらのメソッドを Interactor に移動すると、セルが返されます。Interactor はデータのみを準備し、Presenter を介して View にプッシュする必要があることを知っています。

たぶん私は問題を考えすぎています。VC に大きなスイッチを入れたくないだけです =) 正しい解決策がないことは理解しています。しかし、誰かがそれに直面したのかもしれません。

私の場合、データはデフォルトのセルであり、過負荷のView Controllerを防ぐためにどこかに設定したいと考えています。ええ、セルがデータであるというのはクレイジーに見えるかもしれませんが、構成用の 1000 行のコードを含む ViewControllercellForRowAtIndexPathもクレイジーです =)

4

3 に答える 3

1

テーブルビュー データ ソースとして機能する別のクラスを作成し、ビュー コントローラーのインスタンスを作成することを検討してください。こうすることで、VC クラスが過度に大きくなるのを回避し、コードの単体テストをより簡単に行うことができます。

于 2016-03-16T03:31:40.373 に答える