如何从 Swift 中的 ViewController 获取 UIView 子类实例
Posted
技术标签:
【中文标题】如何从 Swift 中的 ViewController 获取 UIView 子类实例【英文标题】:How to get a UIView subclass instance from its ViewController in Swift 【发布时间】:2017-06-23 13:16:31 【问题描述】:对于这个基本问题,我很抱歉,我只是很难找到答案。我有一个子类 UIView 的视图类,并且有一些基本方法,显然是 draw() 和其他方法。在我的 Main.storyboard 中,我添加了一个 UIView 元素并将其类属性设置为我创建的这个视图类。类是这样的:
class KeyboardView: UIView
// local variables ...
override function draw(_ rect: CGRect)
...
class changeKord()
...
// other methods ...
我想从我的主 ViewController 类中引用在运行时实际创建的实例。当我在代码中为此 UIView 创建一个插座时,我需要实例化它,并且我无法访问类中的实例方法。有什么方法可以获取从 outlet 变量创建的实际实例吗?还是我错过了什么?
我所做的是在类型为 KeyboardView 的 View Controller 类之外创建一个全局变量,并在 KeyboardView 子类的 draw 方法中将该全局变量设置为 self,这允许我直接引用该实例。哪个有效,但看起来真的很hacky..有没有办法从 IBOutlet 引用中偶然获取实例?
【问题讨论】:
【参考方案1】:
我只是把这个简单的例子放在一起,请注意屏幕截图中 IBOutlet 的类型是 CustomView。
我所做的是在情节提要中添加 UIView,然后将属性检查器中的类更改为 CustomView,然后创建 IBOutlet。然后使用了正确的类型,因此我可以引用视图的自定义属性和功能。
如果您之前创建了插座,您可以更新插座中的类型,只要它与属性检查器中的类匹配即可。
【讨论】:
谢谢!!这就是我错过的:(以上是关于如何从 Swift 中的 ViewController 获取 UIView 子类实例的主要内容,如果未能解决你的问题,请参考以下文章