2

次のシナリオの処理方法がよくわかりません…</p>

ビューコントローラー A で何らかのデータを生成しているとします。たとえば、リアルタイムでオーディオ録音を実行しているとします。そして、ボタンを押すと A によって表示されるビューコントローラー B があります。ビューコントローラー B が行うことは、音声データをグラフに表示することです。Viewcontroller B は、いつ表示されても、ビューが画面にロードされる前でも、オーディオの録音が進行するにつれて常に更新されます。

ユーザーがボタンを押してデータ グラフを表示するときはいつでも、グラフに履歴データが含まれ、更新が継続されている必要があります。ユーザーは、記録中に 2 つのビューコントローラー間を行ったり来たりして、記録を停止したり (A)、データグラフを調べたり (B) することもできます。

4

2 に答える 2

1

最初の (A) ビュー コントローラーでプロパティを設定し、それを 2 番目の (B) ビュー コントローラーに渡す必要があるかもしれません。

FirstViewController.h:

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController

@property (nonatomic, strong) NSData *data;

@end

FirstViewController.m:

#import "FirstViewController.h"

@interface FirstViewController()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (IBAction)generateAudioData
{
    self.data = // Your audio data generating code goes here perhaps?
}

- (void)didReceiveMemoryWarning
{
   [super didReceiveMemoryWarning];
}

@end

SecondViewController.h:

#import <UIKit/UIKit.h>

@interface SecondViewController : UIViewController

@end

SecondViewController.m:

#import "FirstViewController.h"
#import "SecondViewController.h"

@interface SecondViewController()

@property (nonatomic, strong) NSData *graphData;

@end

@implementation SecondViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    FirstViewController *audioData = (FirstViewController *)[[UIApplication sharedApplication] delegate];
    self.graphData = audioData.data;
    // Create your graph UIView here and populate it with self.graphData
}

- (void)didReceiveMemoryWarning
{
   [super didReceiveMemoryWarning];
}

@end
于 2012-12-04T02:45:23.867 に答える
0

ビューコントローラーにデータを保存しない方が良いでしょう。表示する必要がある情報を格納する「モデル」レイヤー (オブジェクトまたはオブジェクトのグループ) を作成します。ビュー コントローラーのビューが表示されるか、更新が必要な場合は、モデルからデータを取得します。そうすれば、コントローラーの状態に関して複雑なことをする必要はありません。必要なものを適切なタイミングで取得する責任があります。

于 2012-12-04T02:40:00.563 に答える