#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. Спасибо, я никогда не замечал эту опцию. Есть несколько мест, где это может быть уместно в других моих приложениях.