gpt4 book ai didi

ios - Swift 委托(delegate)协议(protocol)为零

转载 作者:行者123 更新时间:2023-11-30 12:03:25 25 4
gpt4 key购买 nike

我已经研究了 100 次,但仍然找不到我的问题的答案。我有一个非常简单的协议(protocol),但它总是nil。我尝试添加 periodDelegate = self 但收到错误 Cannot allocate value of type 'ScoreClockPopoverViewController' to type 'PeriodDelegate!' 我有其他协议(protocol),使用相同的设置并且工作正常。

我错过了什么?

提前致谢!

import UIKit

protocol PeriodDelegate {

func changePeriodButtonImage(selectedPeriod: Period)

}

class ScoreClockPopoverViewController: UIViewController {

//delegate
var periodDelegate: PeriodDelegate!

override func viewDidLoad() {
super.viewDidLoad()


print("viewDidLoad / periodDelegate \(String(describing: periodDelegate!))")

}

}

我需要调用的函数位于 UICollectionViewCell`

class HeaderCollectionViewCell: UICollectionViewCell {

override func awakeFromNib() {
super.awakeFromNib()

...

}


extension HeaderCollectionViewCell: PeriodDelegate {

func changePeriodButtonImage(selectedPeriod: Period) {

print("blah")

switch selectedPeriod {
case .first:
print("first")
case .second:
print("second")
case .third:
print("third")
case .overtime:
print("overtime")
case .shootout:
print("shootout")

}
}
}

最佳答案

首先,将单元格作为 View Controller 的委托(delegate)是非常罕见的。通常,情况恰恰相反。但无论如何,在您的情况下,您必须将 periodDelegate 设置为该单元格,而不是 self。因为您的单元实现的是委托(delegate)协议(protocol)而不是 VC。但最好重新考虑一下你想做什么,因为这听起来像是糟糕的设计。

关于ios - Swift 委托(delegate)协议(protocol)为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46934981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com