0

私のxcodeアプリでは、以前は次のように設定していました。

メインディスプレイ->エピソードの表ビュー->エピソードの詳細ビュー

ユーザーがUITableViewでエピソードを選択すると、詳細ビ​​ューが読み込まれました。次に、詳細ビューは、対応するファイルのダウンロードなど、いくつかの新しい機能を提供しました。このダウンロードは、ユーザーが詳細ビューのボタンを押したときに作成および開始したヘルパークラスを介して処理されましたが、すべて正常に機能しました。

しかし、詳細ビューには実際にはあまり多くの新しい情報がなかったので、私はそれをすべてテーブルビューのセルに取り込むことを試み始めました。これで、ユーザーがセルをクリックすると、セルの高さが拡大し、追加情報が表示されます。

だから私の質問はこれです。ファイルをダウンロードするなど、詳細ビューから呼び出すために使用したメソッドをどのように処理しますか?

たとえば、関連ファイルをダウンロードするために使用していた関数は次のとおりです。

- (IBAction)downloadTheFile:(id)sender {
    self.downloadProgress.hidden = false;
    self.downloadButton.hidden=true;

    [self.myEpisodeDownloader getFileFromURL:[self.currentEpisode epFileURL] withIndicator:[self downloadProgress]];

}

それを新しいメソッドに取り入れようとすると、何を渡すのか、どのようにさまざまなものにアクセスするのかについて混乱します。基本的に、「詳細ビュー」を失うことで、私はすべてのコンテナを失いました。私の関数では、「自己」を使用してさまざまなものを取得および変更していることがわかります。これで、コンテナの代わりに、cellForRowAtIndexPathのインスタンスが何かを実行しようとしています。

私はすべてをダウンロード機能に渡すという道を歩み始めましたが、それは悪臭を放ち始めました。デリゲートを試す必要がありますか?中級クラス?あきらめて、古い方法に戻りますか?

4

1 に答える 1

0

Cellが新しいコンテナになります。おそらく、詳細ビューにある多くのコードをのサブクラスに直接移動できますUITableViewCell。セルをサブクラス化UITableViewCellしていない場合は、おそらく必要になりますが、外部からすべてを実行できますが、サブクラスで実行すると、物事ははるかに分離され、明確になります。

そのサブクラスでは、テーブルビューで行ったのとほぼ同じことができるはずです。最終的には、ユーザーが多数のセルをタップしてダウンロードを開始したり、キューに入れたりするのを防ぎたいと思うでしょうが、それはあなたが最初のステップで取り入れることができるはずの何か。

UITableViewDelegatetableView:-[did|will]selectRowAtIndexPath:これを使用して、選択されたセルのインスタンスを検索し、必要に応じてそのセルのダウンロードプロセスをトリガーできる関数を提供します。カスタムセルの内側から実行するビューの更新。

于 2013-01-10T13:36:16.667 に答える