在没有prepareForSegue的情况下在两个* .swift文件之间传递数据

时间:2017-09-25 12:10:27

标签: swift delegates

我有两个* .swift文件。一个是带滑块的ViewController。 第二个是抽屉类,它画一条线。

目标是两(1)从滑块值获取变量然后(2)将其传递给'drawer'以绘制一条线然后(3)通知滑块它可以传递一个新值来重绘一条线。

我应该使用委托来传递数据还是太复杂了? 遗憾的是,我无法在没有prepareForSeague的情况下找到代理方法。

代码如下。

的ViewController:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var label: UILabel!

    @IBAction func slider(_ sender: UISlider) {
        label.text = String (sender.value)  
    }

drawer.swift:

import UIKit

// var position =  300  - Here I want to get a variable from the ViewController

class drawer: UIView {

    override func draw(_ rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        context?.setLineWidth(2.0)
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let components: [CGFloat] = [0.0, 0.0, 1.0, 1.0]
        let color = CGColor(colorSpace: colorSpace, components: components)
        context?.setStrokeColor(color!)
        context?.move(to: CGPoint(x: 30, y: 30))
        context?.addLine(to: CGPoint(x: position, y: 400))
        context?.strokePath()
    }
}

1 个答案:

答案 0 :(得分:0)

您可以在全局级别声明变量。

var position = 0.0
class drawer: UIView {}

并替换此处的值。

@IBAction func slider(_ sender: UISlider) {
    label.text = String(sender.value) 
    position = sender.value
}

建议:对于命名约定:将所有类命名为以大写字母开头