1

iOS 開発でのビュー コントローラー間でのデータの受け渡しは、非常に複雑に思えます。私が気付いたことは次のとおりです。データを前方に渡す (ビューをプッシュする) か、ビューに直接セグエすることは、-(void)prepareForSegue メソッドを使用して簡単に行うことができます。presentingViewCotnroller プロパティと presendedViewController プロパティを使用して、ビュー コントローラ間でデータを簡単にやり取りできます。これは、2 番目のビュー コントローラーから最初のビュー コントローラーに戻るデータの例です。これが私が話していることのコード例です:

    ((FirstViewController *)self.presentingViewController).firstViewControllerProperty = self.secondViewControllerProperty;

ただし、複数のView Controllerを介してデータを渡そうとすると行き詰まります。誰もが委任を使用し、MVC の観点から考えていると言っているようです。これをやろうとすると、行き詰まります。理由は次のとおりです。viewControllerA がモデルにデータを保持するように指示し、viewControllerD がデータを必要とする場合、viewControllerD がモデルのインスタンスを参照することになります。(ビューコントローラーからモデルにアクセスする方法は他にありません) モデルのインスタンスを作成するとき、つまり、アクセスしようとしていたデータのない新しいモデルがあると仮定しています.

次に、モデルをシングルトンとしてセットアップする必要があることに気付きました。シングルトンは、モデル クラスのインスタンスを作成することなく、他のすべてのビュー コントローラーによって参照される 1 つのクラスをセットアップするときに発生すると想定しています。シングルトンについて読めば読むほど、軌道から外れているように感じます。これらすべてをまとめようとすると、非常に複雑になります。

ここで何か不足していますか?モデルの新しいインスタンスを作成せずに、さまざまなビュー コントローラーからモデルを参照できるようにする必要がありますか? 私は iOS プログラミングに比較的慣れていないので、正しい方向に向けてくれる人を探しています。委任について学ぶことに力を注ぐべきですか? またはシングルトンについて学びますか?またはターゲットアクションについて学習しますか?ビューコントローラー間のデータ転送について学ぶための簡単なチュートリアル/本の推奨事項はありますか?

4

1 に答える 1

0

最も簡単な方法が必要な場合は、View Controller にプロパティを追加し、その View Controller にデータを渡したい場合は、渡そうとしているデータにプロパティを設定するだけです。もう 1 つの方法は、View Controller でデータを受け取るメソッドを作成し、呼び出し元のコードから、送信するデータを使用してその View Controller でそのメソッドを呼び出すだけです。

データを渡すコントローラーへの参照がある限り、プロパティを設定したり、メソッドを必要に応じて何度でも呼び出すことができます。

デリゲートと混同しないでください。デリゲートはすべて、メソッドを使用して通信するためのインターフェイスを提供する方法です。デリゲートは非常に頻繁に使用されるため、iOS 開発ではデリゲートを理解することが不可欠です。

他の言語のインターフェースに似ているObjective-C プロトコルを読んでください。デリゲートは、単にプロトコルを実装するオブジェクトと呼ばれるものです。

前のView Controllerから知る必要があるデータのみを渡します。ビュー コントローラーをプッシュするたびにデータ ストアを渡す必要はありません。作業中のオブジェクトの ID または新しいビューがそのジョブを実行するために必要な変数をプッシュするだけです。ビュー コントローラーはすべて、互いに独立してデータ ストアにアクセスできる必要があります。データ ストアから簡単に取得できるデータを渡さないでください。

于 2013-02-08T23:50:42.830 に答える