私はアプリを作成しており、現在6つのView Controllerを持っています.View Controller 6にはテキストフィールドがあり、それを編集するときは、View Controller 3でラベルを編集する必要があります.viewcontroller6.hで宣言されたアウトレットをリンクするにはどうすればよいですかストーリーボードでView Controller 3の何かに?私はそれが複雑であることを知っていますが、どんな助けも本当に素晴らしいでしょう! :) ありがとう
3 に答える
ストーリーボードで vc6 から vc3 にアウトレットをリンクすることはできません。vc6 から vc3 にデータを渡す方法はいくつかあります。
(Dustin が述べたように) デリゲート パターンを使用して、テキストフィールド データを vc6 から vc3 に渡します。ただし、View Controller が vc3、vc4、vc5、vc6 の順にチェーンされている場合、この方法を使用するのは面倒です。
共有インスタンス (シングルトン) を使用します。hereのコードを使用します。かなりの数のデータを渡す場合は、このアプローチをお勧めします。
NSUserDefault を使用してテキスト フィールド データを記憶し、vc3 でラベルを表示するときに [NSUserDefaults standardUserDefaults] を使用して値を読み戻します。渡すデータが非常に少ない場合に適しています。この方法のもう 1 つの利点は、次回の起動のためにこのデータを覚えておくことができ、vc6 のテキストフィールドが入力のためにユーザーに表示される前に、vc3 のラベルを正しく表示できることです。
まず、viewcontroller6 で #import "viewcontroller3.h" を実行する必要があります。次に、viewcontroller6.m で、viewcontroller3 のインスタンスを作成できます。その後、viewcontroller3 のすべてのデータにアクセスできます。viewcontroller6.m から viewcontroller3 のそのインスタンスにデータを設定し、viewcontroller3 のビューにプッシュすると、データがそこにあるはずです。
ラベルの場合は、viewcontroller3.h で NSString* stringText のプロパティを作成し、それを viewcontroller3.m ファイルで合成する必要がある場合があります。その後、viewcontroller6 で、その文字列を viewcontroller6 で宣言されたアウトレット値に設定します。それをView Controller 3にプッシュした後、View Controller3のviewdidload()でlabel.text = stringTextのようなことを行います。
したがって、viewcontroller3 のラベルは、viewcontroller6 から設定された stringText.. にあったものに更新する必要があります。
私は以前にこれと同様の質問に答えました:
例:委任者。
簡単な答えは、IBのコントロールドラッグの場合のように、vc6のアウトレットをvc3の何かに実際に「リンク」することはできないということです。あなたが望むことを達成するための最良の方法は、リンクされた質問で概説するデリゲートパターンを使用することです。
少し余分な作業が必要ですが、持っていることは非常に重要なスキルです。