我不清楚如何处理以下情况...
假设您在viewcontroller A中生成一些数据,例如,实时录制音频。你有一个viewcontroller B,当你按下按钮时,它将由A呈现。视图控制器B所做的是在图形中显示音频数据。 Viewcontroller B不断更新,因为无论音频录制何时出现,或者在视频加载到屏幕之前,它都会继续录制。
我要求每当用户按下按钮显示数据图时,图表必须包含历史数据并保持更新。用户还可以在录制期间在两个视图控制器之间来回切换以停止录制(在A中)或检查数据图形(在B中)。
答案 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)
如果不在视图控制器中存储数据,那就更好了。创建一个“模型”图层(对象或对象组),用于存储您需要显示的信息。当视图控制器的视图出现或需要刷新时,从模型中获取数据。这样你就不必对控制器的状态做任何复杂的事情;它负责在合适的时间获得所需的东西。