将值传递给另一个类并在该视图控制器上显示

时间:2019-04-29 04:18:43

标签: ios swift optional

我有两个.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

1 个答案:

答案 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)
        }
    }

}

希望有帮助!