swift - 如何在同一个项目中使用来自其他 swift 文件(相同目标)的函数
问题描述
嘿,我在自己的 swift 文件中有 2 个类。我基本上这样做只是为了在我的 Viewcontroller 中获得更好的概览。不过,我需要访问数据或从我的视图 controller.swift 文件中的其他文件调用函数。它在同一个目标中,所以我不需要将它导入到我的视图控制器文件中,对吗?
如果我确实覆盖了 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()
是lifecycle method
一个UIViewController's instance
。因此,它可以overridden
在每个 中UIViewCiontroller
subclass
,即
class ViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//your code here...
}
}
class Graphen : ViewController
{
override func viewDidLoad() {
super.viewDidLoad()
//your code here...
}
}
现在,file/class
只要它们在同一个target
.
现在,由于Graphen's
customizeChart(values:)
方法是一个instance method
,所以你需要先创建一个instance
,Graphen
然后用它来调用它的实例方法,就像这样,
let graphen = Graphen()
graphen.customizeChart(values: buffer1.map { Double($0) })
同样调用 other instance methods
of Graphen
。假设filteredChart(values:)
and multipleCharts()
are instance methods
,您可以像这样调用它们,
graphen.filteredChart(values: buffer2.map { Double($0) })
graphen.multipleCharts()
推荐阅读
- azure - Azure 数据工厂:来自输入数据集文件夹名称的输出数据集文件名
- reactjs - 无法使用故事书中的图像
- typescript - Manifest V3 - TypeError:无法读取未定义的属性“数据”
- haskell - 代码服务器的 Haskell 语法高亮
- javascript - React useState 与对象更新对象中的几个状态
- plotly-dash - Plotly - 隐藏一点
- javascript - Gmail API - 使用 users.threads.list 与 users.messages.list 获得不同的结果
- node.js - Multer Grid Fs 存储下载而不是快速显示视频
- php - Laravel - 试图获取非对象的属性“id”
- angular - Angular 模块联合 - 共享远程组件