斯威夫特:如何将一个类的委托分配给当前类中的另一个类?

protocol TestDelegate {
    func toggleLeftPanel()
}
class A: UIViewController, TestDelegate {
    //...do sth.
    func toggleLeftPanel() {
        //do sth.
    }
    //...do sth.
}
class B: UIViewController {
    var delegate: TestDelegate?
    func onMenu() {
        delegate?.toggleLeftPanel()
    }
}
class C: UIViewController {
    func presentAction() {
        let b = b()
        b.delegate = A.self//Here will report an error

        let b = B()// I got the instance of B controller
        presentViewController(b, animated: true, completion: nil)
    }
}

认为我现在在C UIViewController中(这对应于iPhone中的屏幕),然后我将通过单击按钮(presentAction)转到B UIViewController。
但是当我到达B UIViewController时,我发现onMenu不起作用(toggleLeftPanel不起作用),因为b的委托属性为nil,所以我决定在当前b UIViewController之前为其分配一个类(instance?)给它(b.delegate)。 ,但出现错误“无法将类型'xxxController.Type'的值分配给类型'xxxDelegate吗?”。
我该如何解决这个问题?还是我应该TestDelegate再次实现C类并分配b.delegate给它自己?

HMHero
let b = b()
b.delegate = A.self

上面的代码完全是胡说八道。首先,没有类名“ b”。应该让b = B()。其次,您应该分配一个实例来进行委派。不上课。像b.delegate = self之类的东西。请阅读https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

您也可以尝试以下代码

protocol TestDelegate: class {
    func toggleLeftPanel()
}

class A: UIViewController, TestDelegate {
    //...do sth.
    func toggleLeftPanel() {
        //do sth.
    }
    //...do sth.
}

class B: UIViewController {
    weak var delegate: TestDelegate?
    func onMenu() {
        delegate?.toggleLeftPanel()
    }
}

class C: UIViewController {
    func presentAction() {

        let a = A()
        let b = B()
        b.delegate = a
        presentViewController(b, animated: true, completion: nil)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将另一个文件中的变量分配给类常量?

如何将文本框值分配给 wpf 中的另一个类

如何将值从一个数据类分配给另一个数据类

将列表分配给另一个类中现有列表的值

如何从另一个类访问一个类中的值?斯威夫特 4

将值分配给另一个类的列表

将一个对象分配给同一类的另一个对象

如何从另一个类更改或将值分配给私有变量JTextField?

卡在NPE上,将Array.toString(object)分配给类中的另一个数组

如何将一个类分配给 ID - css

在C ++中将一个类对象分配给另一个类对象

如何将字符串分配给数据类成员的另一个字符串?

如何将某些类的创建从Guice注入器委托给另一个工厂?

SwingWorker:如何将值从process()方法委托给另一个类

我如何对一个方法正确地将新值分配给另一个类进行单元测试

如何将一个JavaScript文件中的变量分配给另一个JS File?

如何将一个类访问另一个C#类

使用扫描仪值分配给另一个类的变量?

随机类-将对象分配给另一个对象

我可以重载 operator= 以将一个类的对象分配给另一个类的变量,但两个类都来自同一个类模板

如何将参数传递给CDI中另一个类的注入类?

当两个类都在一个活动中时,如何将 Bitmap 从一个类移动到另一个类?

如何将一个包中的类导入到另一个包中的另一个类中?

面向对象设计 - 如何将一个类嵌套到另一个类中

如何将一个类中的变量值用于另一个类?

如何将一个类的实例添加到另一个类的数组中(Ruby)

如何将Java类(从一个包中)继承到另一个类(在另一个包中)

如何将一个变量从一个类移动到另一个类

HTML - 如何将文本值分配给另一个属性的值?