Показывать индикатор загрузки во время загрузки графика в Highcharts

#ios #swift #charts #highcharts #swift3

#iOS #swift #Диаграммы #highcharts #swift3

Вопрос:

Я создаю график с использованием Highcharts framework в одном из проектов iOS с использованием языка Swift.

Функция для генерации графика выглядит следующим образом.

    private func createBUGraph()
{
    let chartView = HIChartView(frame: self.chartHolderViewOutlet.bounds)
    

    let options = HIOptions()
    

    let title = HITitle()
    title.text = "UTS"
    options.title = title
    let subtitle = HISubtitle()
    subtitle.text = "Sales amp; Margin"
    options.subtitle = subtitle
    
    let xAxis = HIXAxis()
    xAxis.categories = ["A", "B", "C", "D"]//
    options.xAxis = [xAxis]

    let yAxis = HIYAxis()
    //yAxis.min = 0
    yAxis.title = HITitle()
    yAxis.title.text = "Sales"
    yAxis.lineWidth = 1
    

    let y2Axis = HIYAxis()
    y2Axis.title = HITitle()
    y2Axis.title.text = "Margin"
    y2Axis.lineWidth = 1
    y2Axis.tickPositions = [5,10,15,20]
    y2Axis.opposite = true
    options.yAxis = [yAxis,y2Axis]
    
    
    let Sales = HIColumn()
    Sales.name = "Sales"
    Sales.data = [3, 2, 1, 3]

    let SalesForecast = HIColumn()
    SalesForecast.name = "Sales Forecast"
    SalesForecast.data = 2, 3, 5, 7]
    
    let Margin = HISeries()
    Margin.name = "Margin"
    Margin.data = [2.5, 1.2, 8.5, 5.5]
    Margin.marker = HIMarker()
    Margin.marker.lineWidth = 2
    Margin.marker.symbol = "circle"
   
    
    let MarginForeast = HISeries()
    MarginForeast.name = "Margin Foreast"
    MarginForeast.data = [3, 2.67, 3, 6.33] //
    MarginForeast.marker = HIMarker()
    MarginForeast.marker.lineWidth = 2
    MarginForeast.marker.symbol = "circle"
    
    
    options.series = [Sales, SalesForecast, Margin, MarginForeast]

    chartView.options = options
    
    self.chartHolderViewOutlet.addSubview(chartView)
}
 

Во время загрузки графика мне нужно отобразить индикатор загрузки на графике. Есть ли какой-нибудь способ показать это?

Или есть какой-либо способ узнать, завершил ли график загрузку или нет?

Заранее спасибо

Ответ №1:

Добавляйте любой загрузчик при каждом вызове метода диаграммы и останавливайте загрузчик при загрузке ваших диаграмм.

Это библиотека для загрузчика, которую вы можете использовать любой другой или загрузчик по умолчанию от Apple.

1.https://github.com/ninjaprox/NVActivityIndicatorView 2.https: //github.com/relatedcode/ProgressHUD

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

1. Я ищу что-то вроде обработчика завершения для highcharts framework.

Ответ №2:

Вы можете попробовать это

 func createBUGraph(completion: (Bool) -> ()) {
    // do stuff here 
    completion(true)
}
    
createBUGraph(completion: { (success) -> Void in
    // add loader
    if success {
        print("true")
        // hide loader
    }
})
 

Ответ №3:

Вы также можете использовать свой собственный загрузчик и показывать его при загрузке графика.
Затем вы можете скрыть его с помощью chartViewDidLoad функции из HIChartViewDelegate

API: https://api.highcharts.com/ios/highcharts/Protocols/HIChartViewDelegate.html#//api/name/chartViewDidLoad

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

1. Я попытался использовать функцию делегирования, как указано в документе. Но почему-то функция делегирования не вызывается.