2

我不清楚如何处理以下情况……</p>

假设您正在视图控制器 A 中生成一些数据,例如实时进行音频录制。而且您有一个视图控制器 B,当您按下按钮时,它将由 A 呈现。viewcontroller B 所做的是在图表中显示音频数据。无论何时呈现或在其视图加载到屏幕之前,Viewcontroller B 都会随着音频录制的进行而不断更新。

我的要求是,每当用户按下按钮显示数据图表时,图表必须包含历史数据并保持更新。用户还可以在录制期间在两个视图控制器之间来回切换以停止录制(在 A 中)或检查数据图(在 B 中)。

4

2 回答 2

1

也许您应该尝试在第一个 (A) 视图控制器上设置一个属性并将其传递给您的第二个 (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 回答