0

私はちょうど 1 週間前に iPhone 向けの開発を始めました。順調に進んでいますが、この質問の仕方さえわかりません (英語は私の自然言語ではありません)。あなたが私を理解できるかどうか見てみましょう。

多くのことを行う ViewController があります。いくつかの画像を表示したり、いくつかのアニメーションを実行したり、ページ コントローラーから白い点を変更しながら画像をスクロールしたり...まあ、この種のものです。

しかし、私の ViewController.m には、たった 1 つのファイルに対して非常に多くのコードがあります。まあ、まだです。

私がやりたいことは、moar コードを記述できる別のファイルを作成して、読みやすさと構成を改善することです。このような:

ViewController.m (ViewController general code)
ViewController_Navigation.m
ViewController_ImagesScrolling.m
ViewController_DBActions.m

必要に応じて、それぞれのヘッダー ファイルを使用します。

それで、どうすればそれを行うことができるかのアイデアや例はありますか?

4

3 に答える 3

0

iOS は MVC モデルに基づいています。したがって、モデルとビューを管理するためにコントローラーを使用する必要があります。

理想的には、私はこれをやっているでしょう:

a.
   1. 画像 -> 画像を表示するためのビューを分離2.
   データベース
   3. 他にあるものは何でも...

b. 上記のコントローラーを管理するための別のコントローラーを実装します。

于 2013-03-14T18:28:00.887 に答える
0

単一のビュー/xib にさらにオブジェクト/コントローラー クラスを追加する必要があります。

そして、それらのそれぞれがクラスに割り当て/リンクされます。

ここに画像の説明を入力

-これは OSX で非常に頻繁に使用されるデザイン パターンです。これが ios でも有効であることを願っています。

于 2013-03-14T18:24:34.623 に答える
0

関数を別々のクラスに分離してカプセル化することは、大量のコードを分解するための一般的な概念です。1 つのタスクに関係するすべてのメソッドは、オブジェクトとしてひとまとめにすることができます。通常は、何らかの UIView サブクラス、または独自の情報画面に値する大きなタスクの UIViewController サブクラスです。たとえば、必要な UIImage を設定すると、画像のスクロールを独自に処理するものがある場合があります。ただし、それを超えて、通常、単一のコントローラーのコードを分割するべきではありません。コントローラーには、MVC パターン内のモデルと共に表示されるビューを保持するすべての接着剤が含まれています。したがって、モデルに依存しないすべての機能がビューに分割されたら、

コードを個別のファイルに分割することはお勧めしません。すべての目的が 1 つであるためです。画面上で何が起こっているかを調整し、ビューがモデルと対話できるようにすることです。ただし、私が通常行うことは、管理しているタスクに応じてコードを分類およびソートすることです。したがって、すべてのライフ サイクル メソッドと通常のメソッドが一番上に表示され、その後にすべてのテーブル ビュー メソッド、イメージ ビューアー メソッドなどが続きます。

これにより、特定のタスクに関連するコードを簡単に見つけることができ、pragmaディレクティブを使用するとさらに簡単になります。メソッドの外側で、並べ替えられたメソッドのグループ間で、 a を使用pragma markしてコード内の場所に識別子を割り当てることができます。これは、次のコード例で行ったように、ジャンプ バーからアクセスできます。

#pragma mark - UIViewController Lifecycle Methods:

- (void) viewWillAppear{
    //stuff
};
- (void) loadView{
    //stuff
};

#pragma mark - UITableView Delegate & Datasource Methods:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    //stuff
 };
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    //stuff
};

ここで、Xcode のコード ビューアーの上部にあるジャンプ バーに移動し、一番右のオブジェクトをクリックしてメソッドを見つけると、次のように表示されます。

ここに画像の説明を入力

コードを並べ替え、プラグマ マークでマークし、可能なすべてのコードを他の UIView と UIViewController に分割した後、コードを複数のファイルに分割する必要があるとは思わないでしょう。ジャンプ バーを使用して、コードの任意のセクションに移動することができます。これは、ファイルをスワップするのと同じように効果的です。ただし、この方法では、コードを 1 つのクラスから断片化してあちこちにばらばらにすることはありません。

于 2013-03-14T19:37:33.263 に答える