Это может показаться странным вопросом, но я пытаюсь реализовать библиотеку BEMSimpleLineGraph для генерации некоторых графиков, которые я размещаю в UITableView. Мой вопрос заключается в том, как я ссылаюсь на внешний dataSource и Delegate, чтобы иметь разные графики, размещенные в каждой ячейке (BEMSimpleLineGraph моделируется после UITableView и UICollectionView). Я в настоящее время есть что-то вроде этого:Как установить источник данных и делегировать внешний контроллер.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: FlightsDetailCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as FlightsDetailCell
cell.userInteractionEnabled = false
if indexPath.section == 0 {
cell.graphView.delegate = GroundspeedData()
cell.graphView.dataSource = GroundspeedData()
return cell
}
if indexPath.section == 1 {
cell.graphView.delegate = self
cell.graphView.dataSource = self
return cell
}
return cell
}
Мой DataSource и делегат для секции 1, правильно ли установлена ниже этого и класс GroundspeedData выглядит следующим образом:
class GroundspeedData: UIViewController, BEMSimpleLineGraphDelegate, BEMSimpleLineGraphDataSource {
func lineGraph(graph: BEMSimpleLineGraphView!, valueForPointAtIndex index: Int) -> CGFloat {
let data = [1.0,2.0,3.0,2.0,0.0]
return CGFloat(data[index])
}
func numberOfPointsInLineGraph(graph: BEMSimpleLineGraphView!) -> Int {
return 5
}
}
По какой-то причине, когда я запустить приложение, Xcode сообщает, что он не может найти dataSource для раздела 0, в частности «Источник данных не содержит данных». Как я должен ссылаться на этот альтернативный источник данных?
Если, как я полагаю, ваша проблема заключается в том, что вы не понимаете разницу между _instantiating_ a class и получением ссылки на экземпляр _existing_ этого класса, в моем новом учебнике Swift есть раздел об этом самом деле: http: //www.apeth.com/swiftBook/ch04.html#_instance_references – matt
У меня есть класс GroundspeedData, показанный выше, и я пытаюсь попросить мой graphView (для определенного раздела) взять его делегат и источник данных из этого класса. Имеет ли это смысл? Данные уже находятся в классе, мне просто нужно получить к нему доступ. – user3185748
Нет, @ user3185748, нет такой вещи, как «данные уже находятся в классе». Данные находятся в _instance_ класса. Это целая концепция, которую вы не понимаете. – matt