Добавить символ графика в линейную диаграмму с помощью coreplot в точку, которой коснулся пользователь - PullRequest
0 голосов
/ 08 февраля 2012

Мне нужно добавить один символ графика и отобразить значения координат x и y в точке, выбранной пользователем.И задача была реализована путем добавления CPTPlotSpaceAnnotation в методе

-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index 

и возврата значения nil по индексу, отличному от выбранного в методе,

-(CPTPlotSymbol *)symbolForScatterPlot:(GraphScatterPlot *)plot recordIndex:(NSUInteger)index 

для отображения только одного графика.

Для отображения только одного графика мне нужно перезагрузить график для каждого касания пользователем линии.Но это утомительный процесс в случае больших наборов данных.Таким образом, пользовательский интерфейс зависал на некоторое время после каждого прикосновения.Как я могу избежать этого?

1 Ответ

3 голосов
/ 09 февраля 2012

Вместо того, чтобы рисовать символы графика на основном графике рассеяния, используйте для этого второй график рассеяния.Требуется только одна точка данных - та, которую вы хотите отметить.Вызывайте -reloadData только на втором графике (не на графике), когда вы хотите обновить положение символа.Верните ноль (0) из -numberOfRecordsForPlot:, чтобы удалить символ графика.Если вы сделаете это таким образом, вам также не понадобится метод -symbolForScatterPlot:recordIndex: источника данных.Просто установите plotSymbol на главном графике на ноль (по умолчанию) и на нужный маркер на втором графике.

...