ios - 委托(delegate)调用后 Swift 对象不会更新

标签 ios swift variables object delegates

我希望在另一个类中的变量也被重置后,步进器和标签重置为零。变量重置,但步进器和标签甚至在使用委托(delegate)后也不会重置。

View Controller :

class ViewController: UIViewController, CircleViewDelegate {

var colors = CircleView()

@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var redStepper: UIStepper!

@IBOutlet weak var redValue: UILabel!

@IBAction func stepperChange(sender: UIStepper)
{
    circleView1.redd1 = Int(redStepper.value);
    redValue.text = Int(sender.value).description;
}

    func updateRedStepperValue(value: Double) {
    redStepper.value = value
    redValue.text = Int(colors.redd1.value).description;
}
override func viewDidLoad() {
    super.viewDidLoad()
    colors.delegate = self
} 
}

圆形 View :

protocol CircleViewDelegate
{
    func updateRedStepperValue(value: Double)
    func updateGreenStepperValue(value: Double)
    func updateBlueStepperValue(value: Double)
}

class CircleView: UIView
{

var delegate: CircleViewDelegate?
    var redd1 = 0

func updateValues()
{
    if(redd1==Int(red1))
    {
        redd1=0;
        delegate?.updateRedStepperValue(0.0)//
    }
}
}

最佳答案

问题是您创建了一个全新的 CircleView 实例。

let cycle = CircleView()

您需要将您的委托(delegate)设置为您当前的工作实例。

为此,您应该将 viewDidLoad 中的分配替换为以下内容:

override func viewDidLoad() {
    super.viewDidLoad()

    let app = UIApplication.sharedApplication().delegate! as! AppDelegate
        if let viewControllers = app.window?.rootViewController?.childViewControllers {
            viewControllers.forEach { vc in
                if let cont = vc as? CircleView {
                    cont.delegate = self
                }
            }
        }
} 

Here's an article with project files.

关于ios - 委托(delegate)调用后 Swift 对象不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329546/

相关文章:

ios - 使用 Socket.io 无法在两个 IOS 设备之间接收消息

ios - AIR for iOS StageVideo 音量控制

ios - SwiftUI |使用 LazyVGrid 拖放?

ios - 如何在 SwiftUI 中创建对象的实例而不重复?

ios - 为什么当我将 UILabel 移动到某个点时,它会在我进入全屏模式时移动?

iOS 应用程序问题 - 如何解决?

javascript - AJAX/Javascript - 将 txt 文件的内容传递给 Javascript 变量

javascript - 当输入的 GCD 为 1 时尝试隐藏跨度(包括代码)

swift - RealmSwift 初始化列表 : Cannot specialize a non-generic definition

PHP - 在字符串中连接或直接插入变量