gpt4 book ai didi

swift - 从内部类调用委托(delegate)

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

有一个带有内部类的类。内部类需要调用外部类中定义的委托(delegate)。我找到了question关于从内部类访问类,它让我朝着正确的方向前进。不幸的是,我没有发现任何关于使用协议(protocol)执行此操作的问题。当运行时,内部类中的外部类始终为零。这是代码

protocol CallBackDelegate {
func afterSetting()
}

public class CallBack {
fileprivate static var instance: inner?
var delegate: CallBackDelegate?
var outer: CallBack?

@discardableResult
public static func show(text: String, _ callBack: Bool = false) -> Bool{
instance = inner(text: text, callBack)
instance?.callBack()
return true
}


fileprivate class inner: UIView {
var hasCallBack = false
var textLabel: UILabel!

convenience init(text: String, callBack: Bool) {
self.init(frame: CGRect(x: 0, y: 0, width: 120, height: 120))

textLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: 20))
textLabel.textAlignment = .center
textLabel.text = text

hasCallBack = callBack
}

func callBack() {
addSubview(textLabel)
if hasCallBack { outer.delegate?.afterSetting() }
}
}


init() {
outer = self
}
}

抛出零的区域是

if hasCallBack { outer.delegate?.afterSetting() }

我确实尝试将父级定义为实例上的内部(instance?.outer = self),但它给了我消息“无法将 CallBack.Type 类型的值分配给 CallBack 类型。然后我进入了 init 方式尝试许多其他方法。

非常感谢您提供解决方案的任何建议/帮助。

最佳答案

您可能忘记初始化委托(delegate)?它已被声明,但您从未为该变量设置值。

关于swift - 从内部类调用委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487166/

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