Swift协议委托意外地在UIViewController中找到了nil

时间:2017-05-17 21:37:43

标签: swift3 swift-protocols

我已经在一个视图控制器中声明了一个协议,并且希望在其呈现视图控制器中调用一个函数。我没有使用故事板。

delegate!.setWishListButton()会导致错误unexpectedly found nil while unwrapping an optional。我知道我不应该使用!但它是用于测试的,因为我的委托函数从未被调用过。

我知道有很多问题,但没有一个与我的用法相符。我在UIView中有类似的模式,工作正常。

这是我的代码

protocol SetWishListButtonDelegate {
  func setWishListButton()
}

class MyViewController: UIViewController {

var delegate : SetWishListButtonDelegate?

------

    func toggleWishListButton() {

    delegate?.setWishListButton()
}

在另一个视图控制器

class anotherViewController: UIViewController, SetWishListButtonDelegate {

let myViewController = MyViewController()

 override func viewDidLoad() {
    super.viewDidLoad()

    myViewController.delegate = self
 }

func setWishListButton() {

    print("DELEGATE METHOD FIRED")

    wishListButton.isSelected = true
 }

1 个答案:

答案 0 :(得分:0)

在我通过按钮按下它的功能中删除了我的视图控制器的第二个声明后,这个工作正常。