嘿,我有 2 个类,每个类都在自己的 swift 文件中。我这样做基本上只是为了在我的 Viewcontroller 中获得更好的概览。尽管如此,我仍需要访问数据或从我的 View controller.swift 文件中的其他文件调用函数。它在同一个目标中,所以我不需要将它导入我的 View Controller 文件中,对吗?
如果我确实重写了 func viewDidLoad() 我会得到一个异常,所以我想我只能做一次(-> 在我的 viewController.swift 中)
//ViewController.swift
class ViewController: UIViewController{
@IBOutlet weak var xMotion: UILabel!
@IBOutlet weak var yMotion: UILabel!
@IBOutlet weak var zMotion: UILabel!
@IBOutlet weak var lineChartView: LineChartView!
@IBOutlet weak var lineChartView2: LineChartView!
override func viewDidLoad() {
super.viewDidLoad()
timebuffer.append(Double(ts1))
colors.append(UIColor.red)
Graphen.customizeChart(values: buffer1.map { Double($0) })
Graphen.filteredChart(values: buffer2.map { Double($0) })
Graphen.multipleCharts()
}
//Graphen.swift
class Graphen : ViewController
{
//creates Plot with specific numbers/data
func customizeChart(values: [Double]){
var dataEntries: [ChartDataEntry] = []
for i in 0..<buffer1.count{//dataPoints.count
let dataEntry = ChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(dataEntry) }
lineChartDataSet = LineChartDataSet(entries: dataEntries, label: nil)
lineChartDataSet.circleRadius = 0.5
let lineChartData = LineChartData(dataSet: lineChartDataSet)
self.lineChartView.data = lineChartData
}
}
最佳答案
viewDidLoad()
是UIViewController 实例
的生命周期方法
。因此,它可以在每个 UIViewCiontroller
subclass
中被覆盖
,即
class ViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//your code here...
}
}
class Graphen : ViewController
{
override func viewDidLoad() {
super.viewDidLoad()
//your code here...
}
}
现在,您不需要导入任何文件/类
,只要它们在同一个target
中即可。
现在,由于 Graphen 的
customizeChart(values:)
方法是一个实例方法
,所以您需要创建一个实例
的 Graphen
,然后像这样使用它来调用它的实例方法,
let graphen = Graphen()
graphen.customizeChart(values: buffer1.map { Double($0) })
同样调用Graphen
的其他实例方法
。假设 filteredChart(values:)
和 multipleCharts()
也是实例方法
,您可以这样调用它们,
graphen.filteredChart(values: buffer2.map { Double($0) })
graphen.multipleCharts()
关于swift - 如何在同一项目中使用其他 swift 文件(同一目标)的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461768/