ios - 如何在 Swift 中从其 ViewController 获取 UIView 子类实例

标签 ios swift uiview

对于这个基本问题,我提前表示抱歉,我只是很难找到答案。我有一个 View 类,它是 UIView 的子类,并且有一些基本方法,显然是 draw() 和其他方法。在我的 Main.storyboard 中,我添加了一个 UIView 元素并将其类属性设置为我创建的这个 View 类。类是这样的:

class KeyboardView: UIView {
    // local variables ...

    override function draw(_ rect: CGRect) {
        ...
    }

    class changeKord() {
        ...
    }

    // other methods ...
}

我想从我的主 ViewController 类中引用在运行时实际创建的实例。当我为此 UIView 在代码中创建导出时,我需要实例化它,并且我无法访问类中的实例方法。有什么方法可以获取从 outlet 变量创建的实际实例吗?还是我遗漏了什么?

我所做的是在 KeyboardView 类型的 View Controller 类之外创建一个全局变量,并在 KeyboardView 子类的 draw 方法中将该全局变量设置为 self,这样我就可以直接引用该实例。哪个有效,但看起来真的很老套。有没有办法偶然从 IBOutlet 引用中获取实例?

最佳答案

Screenshot 1 - Test project Screenshot 2 - Property inspector

我刚刚将这个简单的示例放在一起,请注意屏幕截图中的 IBOutlet 具有一种 CustomView。

我所做的是在 Storyboard中添加 UIView,然后将属性检查器中的类更改为 CustomView,然后创建 IBOutlet。这随后使用了正确的类型,因此我可以引用 View 的自定义属性和函数。

如果您之前创建了 socket 类型,您可以更新 socket 中的类型,只要它与属性检查器中的类匹配即可。

关于ios - 如何在 Swift 中从其 ViewController 获取 UIView 子类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44722420/

相关文章:

ios - "Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value"- swift

ios - 使用 scaleAspectFit 时 UIImageView 中的空白区域

ios - 获取 iPhone 旋转和方向以实时旋转 3D 对象

ios - 如何通过 segue - Swift 从结构对象数组发送变量

swift - 导航到其他页面时发出 SIGABRT 信号

ios - 弹出时 View Controller 中的 UIView 滞后

ios - 在 super.init 初始化 self 之前在方法调用中使用 self

ios - 出现键盘时如何在可见框架的中心移动 View ?

Swift 创建对象矩阵

ios - 当键盘存在时 UIView 编程约束高度增加