HI, я в настоящее время использую ядро-график рисовать динамический график и работаю нормально, теперь я имею в вид, чтобы добавить 2 график на 2 отдельных просмотрах2 ядра-сюжетные графики на 2 отдельного UIViews с обновлением динамических данных
Я начал с «Utility Application» с графическим чертежом Mainview График-1 и чертеж Flipview График-2
График основного графика прекрасно работает и обновляет график и перезагружает каждые 2 секунды, но когда я касаюсь «flipviewWindow», график2 всегда начинается с новых значений и с новым массивом graph2data (вероятно, из-за того, что graph2timer снова вызван ???), но graph1data поддерживает только один NSTimer и отлично работает.
Я не хочу выпускать значения, потому что я хочу видеть график с предыдущими значениями, как в Graph1.
Может ли кто-нибудь посоветовать о том, как реализовать 2 графика основного графика на двух отдельных пользовательских интерфейсах с динамическим обновлением данных? мой графика логик, как показано ниже
In MainViewController.m
-(void)viewDidLoad{
[super viewDidLoad];
[self ConstructGraph1]
}
-(void)ConstructGraph1 {
graph1 = [[CPXYGraph alloc] initWithFrame:CGRectZero];
CPTheme *theme = [CPTheme themeNamed:kCPStocksTheme];
[graph1 applyTheme:theme];
mainViewWindow.hostedGraph=graph1;
.
.
.
.
.
myTimer1=[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(graph1Timer:) userInfo:nil repeats:YES];
}
-(void) graph1Timer: (NSTimer *) Timer{
NSTimeInterval aTimeInterval1 = [[NSDate date]
timeIntervalSinceReferenceDate];
Get JSON request and add object at every 2 sec, after succesfully fetching
[graph1data addObject:...]
[graph1 reloadData];
}
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
[self dismissModalViewControllerAnimated:YES];
}
- (IBAction)showFlipWindow:(id)sender
{
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
}
In FlipViewController.m
-(void)viewDidLoad{
[super viewDidLoad];
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
[self ConstructGraph2]
}
//ConstructGraph2 uses the same logic to draw the graph and to fetch the results
-(void) ConstructGraph2 {
graph2 = [[CPXYGraph alloc] initWithFrame:CGRectZero];
CPTheme *theme = [CPTheme themeNamed:kCPStocksTheme];
[graph1 applyTheme:theme];
mainViewWindow.hostedGraph=graph1;
.
.
.
.
.
myTimer2=[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(graph2Timer:) userInfo:nil repeats:YES];
}
-(void) graph2Timer: (NSTimer *) Timer{
NSTimeInterval aTimeInterval2 = [[NSDate date]
timeIntervalSinceReferenceDate];
Get JSON request and add object at every 2 sec, after succesfully fetching
[graph2data addObject...];
[graph2 reloadData];
}
- (IBAction)showMainWindow:(id)sender
{
[self.delegate flipsideViewControllerDidFinish:self];
}
В чем заключаются рамки myTimer1 и myTimer2? –
@Paul Ardeleanu myTimer1 и myTimer2 возвращают значения JSON в соответствующий массив (для построения графика), пересчитывают график Xrange и перезагружают график. (так что графики движутся вместе с появлением точек данных). Фактически, мне нужно только запустить вызов этого таймера один раз и оставить их runnning.but, когда я делаю флип, только таймер2 вызывается снова (случайно), graph1 и timer1 просто прекрасны, и есть только один экземпляр из них работает ... так что не уверен, как это сделать. – Linus
Linus, я думаю, вам следует отделить процесс поиска от дисплея. Кроме того, вы должны запускать сбор данных по отдельному потоку (асинхронно). –