gpt4 book ai didi

ios - 无法在swift中使用委托(delegate)调用另一个类方法

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

我正在尝试在按钮点击事件中从 A 类调用 B 类的方法。但它不起作用,下面是我的代码。

// Viewcontroller
class ViewController: UIViewController {
@IBAction func btnClicked(_ sender: Any) {
var objA = A()
objA.delegate?.TestA()
}
}

// ClassA.swift
protocol TestA {
func TestA()
}

class A {
var delegate: TestA?
}


// ClassB.swift
class B : TestA {
func TestA() {
print(" Function A from b")
}
}

点击按钮时,不会调用函数 TestA()。

我什至尝试了下面的代码,但它也不起作用:

var objB = B()
var objA = A()
objA.delegate = objB

最佳答案

因为您使用实例化 A 类的实例

    var objA = A()

显然你还没有在 A 中初始化 delegate 属性,因为它的可选默认值为 nil

现在当你打电话

    objA.delegate?.TestA()

delegate 为 nil 因此函数 TestA 不会被调用

建议

始终使用驼峰式大小写来声明函数名称。所以 TestA() 是不正确的,而是使用 testA()

编辑 1:

测试过

@IBAction func btnClicked(_ sender: Any) {
let objA = A()
let objB = B()
objA.delegate = objB
objA.delegate?.TestA()
}

一切正常,有什么问题吗?

关于ios - 无法在swift中使用委托(delegate)调用另一个类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664911/

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