Ios Swift:LEGATE可选值错误

Ios Swift:LEGATE可选值错误,ios,swift,Ios,Swift,我想将一些任务委托给AcceptController,但“SendController”中的委托属性始终返回nil,因此不会执行任何委托。我就是不明白为什么我的委托属性“übergabeDelegate”总是返回零 protocol ÜbergabeDelegate { func übergebeText(text: String) } class SendController: UIViewController { @IBOutlet weak var textField:

我想将一些任务委托给AcceptController,但“SendController”中的委托属性始终返回nil,因此不会执行任何委托。我就是不明白为什么我的委托属性“übergabeDelegate”总是返回零

protocol ÜbergabeDelegate {
    func übergebeText(text: String)
}

class SendController: UIViewController {
    @IBOutlet weak var textField: UITextField!

    var übergabeDelegate: ÜbergabeDelegate?

    @IBAction func save(_ sender: UIButton) {
        if let text = textField.text {
            if übergabeDelegate != nil {
                übergabeDelegate!.übergebeText(text: text)
            } else {
                print("\nübergabeDelegate is nil\n")
            }
        }
    }
}

class AcceptController: UIViewController {
    @IBOutlet weak var label: UILabel!

    let sendController = SendController()

    override func viewDidLoad() {
        super.viewDidLoad()


        sendController.übergabeDelegate = self
        //print("Delegate gesetzt")
    }
}

extension AcceptController: ÜbergabeDelegate {
    func übergebeText(text: String) {
        label.text = "\(text)"
    }
}

我希望标签显示我在SendController上提供的输入,但标签的文本实际上从未更改。

viewDidLoad
中,让SendController=SendController()
创建一个局部变量。
sendController
将在
viewDidLoad
返回后释放。将
sendController
设置为
AcceptController
的一个属性,当您分配它时,代理将保持不变,因为
sendController
对象在
viewDidLoad
返回后不会被释放。

是,这是正确的。您有
SendController
的生存期问题,该问题将通过新属性
SendController
解决。另外,将
SendController.übergabeDelegate
声明为
weak
属性也是合适的,因为您将创建一个保留周期。但是myübergabeDelegate属性仍然返回nil,所以问题仍然不存在fixed@Lukiolio,请发布您的更新代码,以便我们查看更改内容,请显示您是如何显示您的
SendController
@Lukiolio的,因此
SendController
AcceptController
呈现?我想我弄错了!My let sendController创建sendController的新实例,该实例在我的故事板中不是对我的实际sendController的引用
SendController()
创建一个新实例,该实例不是故事板中的实例。您需要使用segue或通过实例化/呈现控制器来实际引用
SendController
。您是对的!我认为这就是问题所在!