2013-01-03 47 views
1

我在這個網站上發現了類似的問題,我嘗試了一些方法,但沒有成功。如何在選中時更改劇情符號的顏色iPhone

我希望繪圖符號在選擇時改變它的顏色,以便準確地看到選擇了哪個符號。我查看了CPTTestApp(在Core Plot示例文件夾中),查看示例以及我在本網站上看到的內容,我必須使用plot參數來決定是否返回自定義符號。但我不知道這個plot參數是什麼。

如何檢測選擇了哪個符號,以便更改其顏色?通過使用索引?

對不起,如何使用這種方法有點困惑。我做了研究,我會繼續,但也許有人有一個想法。

我發現了一個方法symbolForScatterPlot應該給我預期的結果,但我不知道什麼變量selectedIndex是以及我應該如何聲明它以及在哪裏使用它。我從這裏Change line style of CPScatterPlot for different points 了這種方法,它看起來像這樣:

- (CPPlotSymbol *)symbolForScatterPlot:(CPScatterPlot *)plot recordIndex:(NSUInteger)index 
{ 
CPMutableLineStyle *symbolLineStyle = [CPMutableLineStyle lineStyle]; 
symbolLineStyle.lineColor = [CPColor blackColor]; 
CPPlotSymbol *plotSymbol = [CPPlotSymbol ellipsePlotSymbol]; 
plotSymbol.lineStyle = symbolLineStyle; 

if (_selectedIndex != NSNotFound && index == _selectedIndex) 
{ 
    plotSymbol.symbolType = CPPlotSymbolTypeDiamond; 
    plotSymbol.size = CGSizeMake(12, 12); 
    plotSymbol.fill = [CPFill fillWithColor:[CPColor redColor]]; 
} 
else 
{ 
    plotSymbol.symbolType = CPPlotSymbolTypeEllipse 
    plotSymbol.size = CGSizeMake(8, 8); 
    plotSymbol.fill = [CPFill fillWithColor:[CPColor greenColor]]; 
} 
return plotSymbol; 
} 

回答

6

它看起來像你的問題分爲兩個部分:第一定位所選擇的點,然後改變它的顏色。

對於查找選定點,您必須爲您的CPTScatterPlot實例設置一個委託以檢測觸摸事件。 (這裏currentPlot是我的CPTScatterPlot實例)

currentPlot.delegate      = self; 
currentPlot.plotSymbolMarginForHitDetection = 10.0f; 

第二行爲檢測觸摸事件啓用了一定的餘量。這個值是任意選擇的,在我的情況下10看起來不錯。

然後,您可以添加方法plotSymbolWasSelectedAtRecordIndex,一旦選擇了一個點,該方法將被調用:index參數是所選點的索引。

-(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index 
{ 
    selectedIndex = index; 

    // do some other stuff, adding a label for example 

    [plot reloadData]; 
} 

由於所選擇的點位目前,您可以使用您鏈接(不要忘記設置你的CPTScatterPlot實例的數據源)的功能,重繪情節。當您的CPTScatterPlot實例重新加載時,將爲您的圖的每個索引調用此函數。訣竅是,如我的代碼示例所示,當您選擇一個點時調用reloadData。

+0

謝謝!我很開心,因爲它有效。 :)之前沒有工作,因爲我沒有在plotSymbolWasSelectedAtRecordIndex中初始化selectedIndex。 ;) –

+0

很高興幫助:) –

相關問題