如何在View Controller中显示UIControl的子类

问题描述 投票:0回答:2

我希望能够与我制作的 UIControl 进行交互,因此希望将它放在我的 ViewController 中。

我尝试过的

  • 我对 UIControl (1) 进行了子类化。
  • 然后我向视图控制器添加了一个 UIView 并为其分配了新类 (2)。

但是在 Interface Builder 中,我无法将插座设置为新类 (1) 中包含的按钮?!

1:1



2:2



UIControl 的文档确认它是 UIView 的子类,因此我应该能够连接插座,对吧?

我在这里缺少什么? :/

ios swift interface-builder iboutlet uicontrol
2个回答
1
投票

当然,您无法添加 @IBOutlet,因为您添加到

WeekdayControl
的按钮位于
UIViewController
中。

您不能将 @Outlet 添加到

WeekdayControl
按钮只是
WeekdayControl
的子视图。

UIViewController
是这里的老大,你只能在
UIViewController
添加@outlet。

更好地在

WeekdayControl
中以编程方式创建按钮。


1
投票

必须先阅读:-

不能直接使用UIControl类来实例化控件。 相反,它定义了通用接口和行为结构 它的所有子类。

UIControl的主要作用是定义一个接口和基础 准备动作消息和初始调度的实现 当某些事件发生时,他们会到达目标

所以,你做错了,如果你确实需要制作自定义视图或自定义控件,那么你可以直接通过创建自定义 UIView 并将插座直接与视图连接来实现。

我认为您错过了对 UIControl 进行子类化的目标,它没有授予创建插座的权利,因为它是 UIView 的子类,只需阅读文档中所述的内容即可:-

子类化注释

您可能出于以下两个原因想要扩展 UIControl 子类:

观察或修改向目标发送操作消息 特定事件

为此,请重写 sendAction:to:forEvent:,评估传入的 选择器、目标对象或 UIControlEvents 位掩码,然后继续 必填。

提供自定义跟踪行为(例如,更改 突出外观)

为此,请重写以下一个或所有方法: 开始TrackingWithTouch:withEvent:, continueTrackingWithTouch:withEvent:, endTrackingWithTouch:withEvent:.

© www.soinside.com 2019 - 2024. All rights reserved.