【问题标题】:Swift protocol delegate unexpectedly found nil in UIViewControllerSwift 协议委托在 UIViewController 中意外发现 nil
【发布时间】:2017-05-17 21:37:42
【问题描述】:

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

这个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
 }

【问题讨论】:

  • someFunction 在哪里被调用?
  • 问题已编辑。调用函数调用 API,然后调用委托。

标签: swift3 swift-protocols


【解决方案1】:

这在我删除了我的视图控制器的第二个声明后通过按钮按下呈现的函数中起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多