Диаграмма вылетает приложение, когда я делаю это из другого класса

Прежде всего, мой английский не самый лучший, но я постараюсь объяснить ситуацию как можно лучше…

я пытаюсь создать диаграмму временного ряда из другого класса, и она работает, но когда я пытаюсь взаимодействовать с диаграммой (нажмите на диаграмму), она вылетает из моего приложения, и мне приходится останавливаться и запускать ее снова...

Итак, на TimeSeriesChart.h файл у меня есть это...

#import <UIKit/UIKit.h>
#import <ShinobiCharts/ShinobiCharts.h>

@interface TimeSeriesChart : UIViewController {
    id <SChartDelegate> delegate;
    id <SChartDatasource> dataSource;
}

@property (nonatomic, retain) NSMutableArray *data;
@property (nonatomic, retain) NSString *chartTitle;

@end

И на TimeSeriesChart.m файл у меня есть следующий код...

Внутри viewDidLoad () Метод, который я объявил ShinobiChart, и он получит NSMutableArray называемые данные, которые будут содержать точки данных, чтобы сделать диаграмму и NSString называется chartTitle, который будет названием диаграммы.

CGFloat margin = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 1.0 : 1.0;

sChart = [[ShinobiChart alloc] initWithFrame:CGRectInset(self.view.bounds, margin, margin)];

sChart.title = chartTitle;

sChart.autoresizingMask = ~UIViewAutoresizingNone;

sChart.crosshair = SChartCrosshairModeSingleSeries;

SChartDateTimeAxis *xAxis = [[SChartDateTimeAxis alloc] init];
xAxis.title = @"Fecha";
sChart.xAxis = xAxis;

SChartNumberAxis *yAxis = [[SChartNumberAxis alloc] init];
yAxis.title = @"Pesos";
sChart.yAxis = yAxis;

xAxis.enableGesturePanning = YES;
xAxis.enableGestureZooming = YES;

yAxis.enableGesturePanning = YES;
yAxis.enableGestureZooming = YES;

[self.view addSubview:sChart];

sChart.datasource = self;

кроме того, он имеет следующие методы с кодом для создания диаграммы...

-(NSInteger)numberOfSeriesInSChart:(ShinobiChart *)chart {
    return 1;
}

-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(NSInteger)index {
    SChartLineSeries *lineSeries = [SChartLineSeries new];

    lineSeries.selectionMode = SChartSelectionPoint;

    SChartLineSeriesStyle *style = [SChartLineSeriesStyle new];

    style.lineColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
    style.lineWidth = @3;

    style.pointStyle = [SChartPointStyle new];
    style.pointStyle.showPoints = YES;
    style.pointStyle.color = [UIColor colorWithRed:255.0/255.0 green:59.0/255.0 blue:48.0/255.0 alpha:1.0];
    style.pointStyle.radius = @(10);
    style.pointStyle.innerColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
    style.pointStyle.innerRadius = @(3);

    style.selectedPointStyle = [SChartPointStyle new];
    style.selectedPointStyle.showPoints = YES;
    style.selectedPointStyle.color = [UIColor colorWithRed:255.0/255.0 green:59.0/255.0 blue:48.0/255.0 alpha:1.0];
    style.selectedPointStyle.radius = @(15);
    style.selectedPointStyle.innerColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
    style.selectedPointStyle.innerRadius = @(10);

    [lineSeries setStyle:style];

    return lineSeries;

}

-(NSInteger)sChart:(ShinobiChart *)chart numberOfDataPointsForSeriesAtIndex:(NSInteger)seriesIndex {
    return data.count;
}

-(id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(NSInteger)dataIndex forSeriesAtIndex:(NSInteger)seriesIndex {
    return data[dataIndex];
}

Итак, когда я пытаюсь создать диаграмму в другом классе, я объявляю объект типа TimeSeries и устанавливаю данные и chartTitle, который создает диаграмму, но проблема в том, что когда я пытаюсь нажать на диаграмму, происходит сбой приложения, и я надо остановить симулятор и запустить его снова…

TimeSeriesChart *tSChart = [[TimeSeriesChart alloc] initWithNibName:@"TimeSeriesChart" bundle:nil];

[tSChart setData:arrayWithData];
[tSChart setChartTitle:@“Time Series Chart“];

[viewChart addSubview:[tSChart view]];

Я надеюсь, что это понятно, и вы могли бы помочь мне решить эту проблему, спасибо!

РЕДАКТИРОВАТЬ:

В конце концов, это не было ошибкой ShinobiChart, проблема заключалась в том, что, когда я создавал диаграмму, после выполнения метода приложение потеряло ссылку на объект, который содержал диаграмму, поэтому, когда я захотел нажать на диаграмму, он вернул EXC_BAD_ACCESS ошибка, потому что не было ссылки на объект, потому что он уже был освобожден.

0 ответов

Другие вопросы по тегам