首页 > 解决方案 > 代理属性神秘重置

问题描述

我会保持简短

问题:

我关闭视图控制器并在传入控制器上调用一个可以正常触发的函数。该值甚至可以打印到控制台。我将值分配给局部变量,它可以打印并正常工作,直到我开始更新保存该值的 struct 对象上的其他属性。事实上,该值已从它存储的所有对象中完全删除。该代码仅触及该值一次,因此我不确定发生了什么。

这就是我解雇的方式:

var controller = AddVendersTableViewController()

override func viewDidLoad() { 
...
        //MARK: Temp
        controller.delegate = self
}

@objc func returnToOriginatingController(){
        dismiss(animated: true) { [weak self] in
            self?.controller.enabledStatusChecker()
            print("This is the initiated view controller — \(String(describing: self?.controller))")
        }
        submitButton.isHidden = true
    }

这是新控制器上的接收端:

var delegate : CompanyAddressDelegate? = nil

func enabledStatusChecker(){

            if delegate != nil {
                guard let string = delegate?.getCompanyAddress() else {return}
                let localString = string
                localVenderObject?.address  = localString
                print(localVenderObject ?? "this is not working")
                print("\(self) — This is the current VC ")
            }

        print(localVenderObject ?? "No Value in enabledStatus")
        if localVenderObject?.name != nil && localVenderObject?.phone != nil && localVenderObject?.email != nil && localVenderObject?.website != nil && localVenderObject?.address != nil {
            submitButton.isEnabled = true
            submitButton.layer.backgroundColor = UIColor.systemBlue.cgColor // temp color
        }
    }

标签: iosswiftpropertiesarchitecturedelegates

解决方案


推荐阅读