我有两个.swift
类。 Test.swift 和 Start.swift 。
Start.swift 具有一个名为outputPercentage
的函数。见下文。
var startClass = StartView()
class StartView: UIViewController {
@IBOutlet var testProg: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
testClass.sendpct()
}
func outputPercentage(pct: Int32) {
let pctTxt = String(pct)
print("Test Progress: ", pctTxt as Any)
testProg.text = "Test" //pctTxt! + " / 100"
}
}
testProg 是UILabel
。
下面的函数位于 Test.swift 中,并将Int32值传递回上述 Start.swift 中的函数,如下所示:
var testClass = TestView()
class TestView {
func sendpct() {
var percentComplete : Int32 = 0;
startClass.outputPercentage(pct: percentComplete)
}
}
下面的行给我一个“ 意外的可选nil ”错误。
testProg.text = pct_txt! + " / 100"
UILabel
的所有设置都正确,因为我可以在该类的其他地方设置它,仅当该值已从另一个类传递过来时才会发生此错误。
如何正确将值输出到我的UILabel
?
答案 0 :(得分:1)
最好为您的案例使用Delegate。
在 Start.swift
中import UIKit
protocol StartDelegate: class {
func outputPercentage(pct: Int32)
}
class StartView: UIViewController, StartDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var test = Test()
test.startDelegate = self
test.sendpct()
}
// MARK: - Delegate Methods
func outputPercentage(pct: Int32) {
print(pct)
}
}
在 Test.swift
中class Test {
weak var startDelegate: StartDelegate?
func sendpct() {
if let startDelegate = startDelegate {
var percentComplete : Int32 = 0;
startDelegate.outputPercentage(pct: percentComplete)
}
}
}
希望有帮助!