Ios 如何将协议添加到Swift中interfacebuilder的元素中?
如果我在故事板中有一个Ios 如何将协议添加到Swift中interfacebuilder的元素中?,ios,swift,swift-protocols,swift-extensions,Ios,Swift,Swift Protocols,Swift Extensions,如果我在故事板中有一个UILabel的实例,并将其连接到视图控制器,作为IBOutlet。如果我只想在这个标签上添加一些功能,我该怎么做?我知道,对于obj-c,您创建了UILabel的子类。但我想知道在swift中是否有更好的方法 这个特定的标签是否可能符合我将制定的一些协议 如果我只想在这个标签上添加一些功能,我该怎么做 您可以使用扩展向现有类添加功能: extension UILabel { func foo() -> String{ // this funt
UILabel
的实例,并将其连接到视图控制器,作为IBOutlet
。如果我只想在这个标签上添加一些功能,我该怎么做?我知道,对于obj-c,您创建了UILabel
的子类。但我想知道在swift中是否有更好的方法
这个特定的标签
是否可能符合我将制定的一些协议
如果我只想在这个标签上添加一些功能,我该怎么做
您可以使用扩展向现有类添加功能:
extension UILabel {
func foo() -> String{
// this funtionality is availible on all UILabels now.
// You can also call self. Example:
return self.text
}
}
查找详细信息
如果我只想在这个标签上添加一些功能,我该怎么做
您可以使用扩展向现有类添加功能:
extension UILabel {
func foo() -> String{
// this funtionality is availible on all UILabels now.
// You can also call self. Example:
return self.text
}
}
查找详细信息。您可以在使用ui标签的同一文件中声明private
扩展名
private extension UILabel {}
在这种情况下,只有同一文件中的零部件才能使用新功能。我知道,这是一种变通方法,但在我的例子中,我为每个组件创建一个文件,它是有效的
请注意,协议一致性必须是公共的,因此不能使用private
访问级别
编辑:由于您只需要在单个文件中为一个UILabel
进行特殊配置,因此这种方式不允许。子类化是唯一的解决方案您可以在使用UILabel的同一文件中声明private
扩展名
private extension UILabel {}
在这种情况下,只有同一文件中的零部件才能使用新功能。我知道,这是一种变通方法,但在我的例子中,我为每个组件创建一个文件,它是有效的
请注意,协议一致性必须是公共的,因此不能使用private
访问级别
编辑:由于您只需要在单个文件中为一个UILabel
进行特殊配置,因此这种方式不允许。子类化是唯一的解决方案如果你想符合任何协议,你需要将这个UILabel
子类化,或者在你的应用程序OK中创建所需范围内的扩展,所以我认为扩展就是一种方法。是否可以仅为一个标签配置扩展?如果您想要符合任何协议,您需要将此UILabel
子类化,或者在应用程序OK中的所需范围内创建扩展,因此我认为扩展就是一种方法。可以只为一个标签配置extenstion吗?好的,但是如果a不想让它成为屏幕上所有标签的一部分怎么办?那么您必须子类UILabel
并使用自定义类。好的,但是,如果a不希望它成为屏幕上所有标签的一部分,该怎么办?您必须子类化UILabel
,并使用自定义类。好的,如果我在视图控制器中声明多个标签,则此专用扩展仍将影响所有标签。感谢您的帮助,meThen子类化是唯一的解决方案@KlemenZagarok,请将此解释放在您答案的末尾,我将其标记为已接受的解决方案。Dod it@KlemenZagar。如果我在一个视图控制器中声明多个标签,那么这个私有扩展仍然会影响所有标签,希望这对我有所帮助。感谢您的帮助,meThen子类化是唯一的解决方案@KlemenZagarok,请将此解释放在您答案的末尾,我将其标记为已接受的解决方案。Dod it@KlemenZagar。希望有帮助