2017-02-16 8 views
0

私はobjcプロジェクトでios Charts 3.0を使用しています。私はstackoverflowの答えを探していたが、私にとって正しい結果はなかった。私は私のプロジェクトで水平棒グラフや円グラフを使用していますし、これですべての軸だけでなく、カスタムフォーマッタのためios charts integer convert

yAxis.valueFormatter = NSNumberFormatter() 
yAxis.valueFormatter.minimumFractionDigits = 0 

を使用してみました:

- (NSString *)stringForValue:(double)value 
         axis:(ChartAxisBase *)axis 
{ 
    return [@((NSInteger)value) stringValue]; 
} 

どちらの方法が私のために動作しませんでした。あなたたちはこれを解決するためにお手伝いしてもらえますか?

Screen shots

+0

私はグラフを使用していませんが、値を出力して結果を確認するだけでなく、結果を返すことができます。次に、probnlemが変換に含まれているかどうかを確認できます。 – Darkwonder

答えて

2

以下のコードを試してみてください。私はSwiftでそれを書いたし、Objective-Cもあまり知らない。私はそれが助けて欲しい私はBarChartのためにこれを使用しています、それは魅力のように動作します。あなたはあなたのコードで今すぐ

import Foundation 
import Charts 

// Custom value formatter class 
class BarValueFormatter : NSObject, IValueFormatter { 

    // This method is called when a value (from labels inside the chart) is formatted before being drawn. 
    func stringForValue(_ value: Double, 
         entry: ChartDataEntry, 
         dataSetIndex: Int, 
         viewPortHandler: ViewPortHandler?) -> String { 
     let digitWithoutFractionValues = String(format: "%.0f", value) 
     return digitWithoutFractionValues 
    } 

} 

、カスタムフォーマッタクラスでIValueFormatterプロトコルを拡張する必要が

let fmt = NumberFormatter() 
fmt.numberStyle = .decimal 
fmt.maximumFractionDigits = 0 
fmt.groupingSeparator = "," 
fmt.decimalSeparator = "." 
yAxis.valueFormatter = DefaultAxisValueFormatter.init(formatter: fmt) 
+1

データセット用のこのフォーマッタを追加した後、私のために働いています。 :) 'dataSet.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:numFormatter];' –

0

は、カスタムクラスを使用してバー値フォーマッタを初期化します。すべての精度/フランチャル値が削除されます。

let chartDataSet = BarChartDataSet(values: <dataSetValues>, label: <stringValue>) 
let valueFormatter = DigitValueFormatter() 
chartDataSet.valueFormatter = valueFormatter 
関連する問題