【发布时间】: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,然后调用委托。