Core-Plot: перезагрузка данных только на одном из двух графиков

#core-plot #reloaddata

#core-plot #reloaddata

Вопрос:

У меня есть график с двумя графиками. Первый график, CPTScatterPlot * boundLinePlot, требует большого объема данных и должен быть создан только один раз.

Второй график, CPTScatterPlot * dotPlot, с другой стороны, представляет собой всего лишь одну точку, которая перемещается по графику в ответ на изменения в ползунке. Мне нужно только обновить этот график.

Я использовал [graph reloadData] в конце моего метода слайдера, но это должно обновлять оба графика, и производительность сильно страдает. Каков синтаксис для перезагрузки только одного графика?

Кроме того, возможно ли обновлять только тогда, когда ползунок перестает двигаться, а не обновлять для каждого значения ползунка между запуском и остановкой?

Ответ №1:

Вы также можете вызывать -reloadData на отдельных графиках.

 [dotPlot reloadData];
  

Комментарии:

1. Эрик, я не понимаю, как это может работать, и это не так. Код графика и графика находится в методе -(void)viewDidLoad метод, в то время как код слайдера, который изменяет массив данных, который будет отображаться с помощью CPTScatterPlot * dotPlot, находится в другом методе — (IBAction)selectRisk:(id)sender.

2. Вам нужно сохранить ссылку либо на график, либо на график в переменной экземпляра. Если у вас есть ссылка на график, используйте метод -plotAtIndex: или -plotWithIdentifier: , чтобы получить ссылку на точечный график.

Ответ №2:

Вы спрашиваете:

Кроме того, возможно ли обновлять только тогда, когда ползунок перестает двигаться, а не обновлять для каждого значения ползунка между запуском и остановкой?

Этого можно легко достичь, сняв флаг ‘Continuous’ в части состояния ползунка. Посмотрите в xib или задайте его динамически в своем коде:

Mac:

 [yourSlider setContinuous:NO];
  

iOS:

 yourSlider.continuous=NO;
  

Комментарии:

1. Спасибо, я никогда не замечал эту опцию. Есть несколько мест, где это может быть уместно в других моих приложениях.