2

私は、いくつかの回答を生成することを望んでいた一般的な理論の質問にすぎません。私はiosを学んでいて、いじくり回している1つのビューを持つプロジェクトを持っています。サーバーに接続してチャットを受信するソケットを管理する実行ループがあります。テキストビューは新しいチャットで更新されます。これで、このテキストビューがストーリー ボード 1 にアタッチされます。ストーリー ボード 2 を追加するときに、ストーリー ボード 2 に移動するかどうかを尋ねます (この複数ページの側面について読んでいます)。ビュー 1 のチャットは更新され続けますが、もちろんユーザーには表示されません。彼らが景色に戻るまで。2 番目の質問は、最初のビュー コントローラーでストーリー ボード 2 と 1 つを同時に更新できるかどうかです。セグエの私の本で、変数をストーリーボード 2 に渡すことができるのを見ました。しかし、View Controller 1にある私のソケット実行ループは、View Controller 2つの変数にアクセスできます。そうでない場合は、telnet からストーリー ボード 2 に更新を伝達するために、ある種のキューを調査する必要があるようです。

4

1 に答える 1

2

あなたはかなり複雑なプロジェクトから始めています-非常に感銘を受けました。ストーリーボードとセグエに関する簡単なメモをいくつか示します。

  • ビューコントローラーを使用してストーリーボードをセットアップしてから、別のビューコントローラーへのセグエをセットアップする場合-新しいビューコントローラーが作成された場合、元のビューコントローラーはまだメモリ内にあり、そのようにプログラムすると通知またはコールバックに応答できます。

    • セグエしたViewControllerを「ポップ」または「却下」すると、メモリから削除されます。

    • セグエを実行すると、と呼ばれるメソッドで新しいViewControllerへの参照が自動的に取得されprepareForSequeます。この参照をプロパティに格納し、そのプロパティを使用して必要に応じて更新できます。

だからここに疑似例があります:

  • ビューコントローラaにはネットワークコードがあります。バッファがいっぱいになると、ビューコントローラaのメソッドが呼び出されると思います。これを参照としてnetworkMethodと呼びましょう。ネットワークメソッドの側で、文字列ができあがり、その文字列をView Controller bに渡して、そこで何かを実行できるようにしたいとします。したがって、変数を設定するだけでなく、メソッドに渡すので、変数を使って何かを行うことができます。うまくいけば、そのシナリオはあなたのニーズに合ったものになります。そうでなければ、私の例の残りの部分はベースから外れてしまいます。

タスク-ViewControllerの参照を設定しますb。ビューコントローラのインポートセクションに.hファイル

#import "ViewControllerB.h"  //this is the name of your view controller b class

ビューコントローラaのインターフェイスセクション(.hファイル)に次を追加します。

@property (nonatomic, strong) ViewControllerB *viewB;

.mファイルでは、セグエをトリガーします-おそらくボタンまたは何らかのアクションで。あなたはすでにこれを持っているように聞こえます:

[self performSegueWithIdentifier:@"viewB" sender:self];

次に、次のような新しいメソッドを作成します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    self.viewB = segue.destinationViewController;  //this stores a reference for later

}

これで、コールバックメソッドで、次のようにViewControllerbを参照できます。

-(void)networkCallbackMethod:(NSString*)stringData {

    if (self.viewB) {

     [self.viewB myCustomMethodUsingPassedData:stringData];

    }


}

最後に、View Controller bで、次のようなマッチング方法を使用します。

-(void)myCustomeMethodUsingPassedData:(NSString*)stringData {
     //update the view here
}

これにより、2つのView Controllerをセットアップし、参照をセグエして取得し、必要に応じて新しいViewControllerを更新できるフレームワークが大まかに提供されます。

それがお役に立てば幸いです。幸運を。

于 2012-11-30T14:28:01.133 に答える