2017-12-14 21 views
1

여러 차트 (막대 차트, 선형 차트, 원형 차트)가있는보기 컨트롤러를 개발하려고했습니다. 내가 테이블보기 및 사용자 정의 테이블보기 셀을 만들었습니다. 사용자 지정 테이블보기 셀에는 UIView이 있습니다. 내가 캐스팅하려고 그러나, 그 UIViewBarchartView에 나에게동일한보기의 여러 차트 IOS 차트

가 'Charts.LineChartView'(0x1074f63a0)에 유형의 가치 '있는 UIView'(0x10a8e7f40)를 캐스팅 할 수 없습니다 오류가 있습니다.

동일한 표보기에서 여러 차트를 어떻게 얻을 수 있습니까? 미리 감사드립니다.

cellForRowAt indexPath :

let cell = myTableView.dequeueReusableCell(withIdentifier: "chart") as? GraphicCell 
var lineChart:LineChartView = cell?.chart as! LineChartView 
lineChart.noDataText = "A" 
return cell! 

the view outlet that I have created in GraphicCell is UIView type 

차트 표시되는 사용자의 선택에 따라 달라집니다. 사용자는 하나의 가로 막 대형 차트와 두 개의 선형 차트 또는 막대 차트가없는 두 개의 선형 차트 만 선택할 수 있습니다. 나는 이것을 달성하는 방법을 완전히 이해하지 못합니다. 내 프로젝트를 GitHub에 추가했습니다. project link

+0

코드를 공유 할 수 있습니까? – DevB2F

+0

내 cellForRowAt 메소드에 cell = myTableView.dequeueReusableCell (withIdentifier : "chart")를? GraphicCell var lineChart : LineChartView = cell? .chart as! LineChartView lineChart.noDataText = "A" 반환 셀! 내가 GraphicCell에서 만든보기 콘센트 UIView 형식입니다 –

답변

1

chartView는 UIView 유형이 아니므로 선언 할 때 올바른 유형이어야합니다. 이 같이있는 tableView 세포 내부의 3 개의 다른 전망을 가질 수 있습니다

@IBOutlet weak var barChart: BarChartView! 
@IBOutlet weak var pieChart: PieChartView! 
@IBOutlet weak var lineChart: LineChartView! 

을 다음 당신은 당신이 원하는 그래프 유형에 따라 필요한 하나를 사용하십시오. 스토리 보드를 사용하는 경우 스토리 보드에서 각보기의 클래스를 BarChartView, LineChartView 또는 PieChartView로 선택해야합니다.

+0

당신의 대답을 주셔서 감사하지만 그 솔루션을 시도 할 때 같은 테이블보기에서 3 또는 4 차트를 그릴 수 없습니다. 내 프로젝트를 Github에 업로드했습니다. https://github.com/melihdolgun/MultipleCharts/tree/master/ChartsDeneme[link] 내가 틀린 곳을 알려주시겠습니까? –

0

TableView에서 사용하려는 각 차트 유형에 대해 프로토 타입 셀을 만들어야합니다. 각 프로토 타입 셀에 당신은 등의 UIView를 넣고 LineChartView, BarChartView에있는 UIView의 클래스를 변경해야

Set class for view

는 또한 각 프로토 타입 셀에 대해 자신의 클래스를 정의 할 필요가

, 예를 들면 :

class MyLineChartCell: UITableViewCell { 

    @IBOutlet weak var lineChartView: LineChartView! 

    func configure (/* ... */) { 
     lineChartView.noDataText = "You have no data" 
     // ... 
    } 

} 

.

사용하면이 클래스는 세포 프로토 타입 : Set class for cell

그런 다음 FUNC func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 당신이 순간에 사용되는 프로토 타입을 선택할 수 있습니다.

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    if indexPath.row == 0 { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "MyLineChartCellIdentifier") as! MyLineChartCell 
     cell.configure(/* Data, Colors, etc. */) 
    } 
    if indexPath.row == 1 { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "MyBarChartCellIdentifier") as! MyBarChartCell 
     cell.configure(/* Data, Colors, etc. */) 
    } 
    //... some other types of cells 

    return cell 
} 
+0

답변을 주셔서 감사합니다. 그런 식으로 해 보았습니다.하지만 꺾은 선형 차트가 없으면 막 대형 차트와 원형 차트 만 있습니까? –

+0

물론 필요한 모든 유형의 차트를 사용할 수 있습니다. 예를 들어 LineChartView 만 사용 했으므로 LineChartView를 PieChartView로 바꿀 수 있습니다. – AlexSmet

+0

그러나 표시되는 차트는 사용자 선택에 따라 다릅니다. 사용자는 하나의 가로 막 대형 차트와 두 개의 선형 차트 또는 막대 차트가없는 두 개의 선형 차트 만 선택할 수 있습니다. 나는 이것을 달성하는 방법을 완전히 이해하지 못합니다. GitHub에 프로젝트를 추가 했으니 까? 나는 정말로 https://github.com/melihdolgun/MultipleCharts/tree/master/ChartsDeneme[link] –