使用尚未显示的实时数据更新视图,ios

时间:2012-12-04 02:34:51

标签: objective-c ios xcode

我不清楚如何处理以下情况...

假设您在viewcontroller A中生成一些数据,例如,实时录制音频。你有一个viewcontroller B,当你按下按钮时,它将由A呈现。视图控制器B所做的是在图形中显示音频数据。 Viewcontroller B不断更新,因为无论音频录制何时出现,或者在视频加载到屏幕之前,它都会继续录制。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果不在视图控制器中存储数据,那就更好了。创建一个“模型”图层(对象或对象组),用于存储您需要显示的信息。当视图控制器的视图出现或需要刷新时,从模型中获取数据。这样你就不必对控制器的状态做任何复杂的事情;它负责在合适的时间获得所需的东西。