gpt4 book ai didi

ios - 如何使用 IBOutlet 子类化变量?

转载 作者:IT王子 更新时间:2023-10-29 05:22:59 25 4
gpt4 key购买 nike

我的特定类的所有后代都有一个 UILabel 实例变量。所以在我的父类中我有 var label: UILabel。我也想把它放在子类中,但作为 IBOutlet。我该怎么做?

我添加了同名的 IBOutlet,并在两个变量声明中添加了 weak。但是我收到有关“无法使用存储的属性覆盖”的错误消息。

我应该怎么做?是否有可能不必实例化父类(super class)的版本,因为我只希望它用于子类化?

最佳答案

这样做是在子类中重新声明 label 属性。 IBOutlet 只是一个用于使用 Interface Builder 的编译器概念。

在 Swift 中,存储的属性 不能在子类中被覆盖或重新声明。它们只能被继承。

但是,您可以在子类中覆盖 propertiesgettersetter 以提供额外的验证或功能。请参阅 Swift 指南:override getter setter

您需要使用 IBOutlet 在父类(super class)中声明您的属性。

或者你可以在你的子类中创建一个不同的属性。同样,如果您在一个子类(父类(super class)可能有其他)中连接您的属性并且您没有将此实现提供给父类(super class)的其他子类,那也没有任何意义。

编辑:您还可以将 label 导出设置为 Storyboard中 SuperClass 的两个不同的 viewControllers,如果你在 Storyboard中为不同的 View Controller 提供子类名称。

定义

 class SuperClass{
@IBOutlet weak var label: UILabel! = nil

}

SubClass1 代表 view controller1 派生自 SuperClassSubClass2 代表从 SuperClass

派生的 Storyboard中的另一个 view controller2

然后转到 Assistant Editor 并打开 SuperClass 一侧和另一侧 view controller1 并从 SuperClass 连接 socket > 到 view controller1 的 storyBoard 中的 label。从 SuperClass label 拖到 view controller1< 的 storyBoard/

enter image description here

现在再次打开 SuperClass 一侧和另一侧 view controller2 并将 socket 从 SuperClass 连接到 label view controller2 中的 Storyboard。从 SuperClass label 拖动到 view controller2 中的 Storyboard

如果你点击 SuperClass socket ,你会看到两个标签连接到不同的 viewControllers

关于ios - 如何使用 IBOutlet 子类化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25088668/

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