在SWIFT iOS中未调用委托

在SWIFT iOS中未调用委托,ios,swift,Ios,Swift,我创建了两个视图,一个用于协议和委托。对于第一个视图,不调用委托函数 我的FirstView控制器:这里我正在访问委托函数 import UIKit class NextViewController: UIViewController,DurationSelectDelegate { //var secondController: DurationDel? var secondController: DurationDel = DurationDel() @IBAc

我创建了两个视图,一个用于协议和委托。对于第一个视图,不调用委托函数

我的FirstView控制器:这里我正在访问委托函数

import UIKit

class NextViewController: UIViewController,DurationSelectDelegate {
    //var secondController: DurationDel?

    var secondController: DurationDel = DurationDel()

    @IBAction func Next(sender : AnyObject)
    {
        let nextViewController = DurationDel(nibName: "DurationDel", bundle: nil)
        self.navigationController.pushViewController(nextViewController, animated: true)
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        secondController.delegate=self
    }

    func DurationSelected() {
        println("SUCCESS")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
我的SecondView控制器:我在这里创建委托

import UIKit

protocol DurationSelectDelegate {
    func DurationSelected()
}


class DurationDel: UIViewController {

    var delegate: DurationSelectDelegate?

    @IBAction func Previous(sender : AnyObject) {
        //let game = DurationSelectDelegate()
        delegate?.DurationSelected()
        self.navigationController.popViewControllerAnimated(true)
    }


    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

在我看来,似乎您正在推送一个尚未实际设置委托的视图控制器。如果您更改了“下一步”函数,以包含该行

nextViewController.delegate = self

你应该看到授权是有效的。在这样做的过程中,您可能还可以删除“secondController”的创建,因为这看起来是多余的。

您遵循的命名约定会让团队中的其他开发人员感到困惑。这个例子应该是

let durationDel = DurationDel(nibName: "DurationDel", bundle: nil)
正如@eakerod所提到的,您要设置的委托是

durationDel.delegate = self

您是否尝试过此,
delegate!。DurationSelected()?是的。它因以下错误而崩溃致命错误:无法展开可选。无