如何在一个ViewController中创建实现多协议?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个ViewController中创建实现多协议?相关的知识,希望对你有一定的参考价值。

我想创建一个具有不同活动的协议。我的参考是Java android上的接口,我们可以将变量创建为接口,然后像在类中实现的那样进行初始化。那么,等效于swift代码的接口是什么?


//Android Interface
private OnValueChanged joinDay, birthDay;

//initialize
joinDay = new OnValueChanged(value -> 
//somecode
);

birthday = new OnValueChanged(value -> 
//somecode
);


interface OnValueChanged
   void didChanged(Date value)


//END OF ANDROID INTERFACE








//SWIFT PROTOCOL

class myClass : OnValueChanged


func didChanged(Int value)
//somecode




protocol OnValueChanged
    func didChanged(Int value)


//END OF SWIFT PROTOCOL

我想要创建一个变量或类似的东西,可以为同一个类实现不同的代码,例如在Android Side上。

如何迅速做到这一点?

感谢

答案

在Swift中,您不需要其他类型。您的Java接口可以在Swift中用closure表示。具体来说,它是(Int) -> Void类型的闭包。

您可以在Swift中这样声明joinDaybirthday

var joinDay: ((Int) -> Void)?
var birthday: ((Int) -> Void)?

要分配“实现”,请执行:

joinDay =  value in
    // do something with the parameter "value"
    print(value)

和在Swift中调用joinDay.didChanged(someValue)的等效项是:

joinDay?(someValue)

有关如何使用闭包的更多信息,请参见Swift指南中的Closures。>>

以上是关于如何在一个ViewController中创建实现多协议?的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据模型中创建警报,并在 ViewController 中将其作为参数调用

如何在不同的视图控制器中创建插座?

在 ViewController 中创建选项卡视图的最佳方法是啥

如何在 Swift Xcode 中创建自定义导航栏?

从另一个 UIViewController 的 .xib 文件在 ViewController.h 中创建 IBOutlets

在swift5中按下特定按钮时如何使用代码呈现tabBarViewController(在情节提要中创建)?