Swift,iboutlet和自定义控件

hob*_*art 10 xcode iboutlet ios swift

我可能正在做一些非常愚蠢的事情,但我似乎无法使用Interface Builder将IBOutlet变量连接到自定义视图,但仅限于Swift.

我创建了一个名为MyView的类,它从UIView扩展而来.在我的控制器中,我有一个MyView变量(声明为@IBOutlet var newView:MyView).我进入IB并将UIView拖到窗口上并给它一类MyView.

每当我在Objective C中完成类似操作时,我就可以单击应用程序窗口顶部的View Controller按钮,选择变量并将其向下拖动到控件以将两者链接在一起.当我在Swift中尝试它时,它拒绝承认视图在那里.

如果我将控制器中变量的类更改为UIView,它可以正常工作.但不是我的自定义视图.

还有其他人遇到过这个问题吗?它是一个功能,还是只是我的愚蠢?

控制器代码

import UIKit

class ViewController: UIViewController {

    @IBOutlet var newView:MyView

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
Run Code Online (Sandbox Code Playgroud)

视图代码

import UIKit

class MyView: UIView {

    init(frame: CGRect) {
        super.init(frame: frame)
        // Initialization code
    }

    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect)
    {
        // Drawing code
    }
    */

}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ffy 11

我有一个类似的问题,我认为这部分是一个缓存问题,部分只是一个Xcode6/Swift问题.我发现需要的第一步是确保在选择"自动"时将视图控制器.swift文件加载到Assistant Editor中.

随着Xcode发现两个文件都被链接,我有时可以控制 - 从视图/按钮/等拖动.从IB到.swift文件,但经常不得不从@IBOutlet var newView:MyView行的阴沟中的空圆拖到我希望它匹配的视图.

如果您无法在助理编辑器中加载文件,那么我发现执行以下操作通常会起作用:

  1. 从IB视图中删除自定义类
  2. 清理项目(cmd + K)
  3. 关闭/重新打开Xcode
  4. 可能再次清洁?
  5. 将自定义类添加回视图
  6. 希望它有效:)

如果这似乎让你中途/无处添加评论,我会看到它是否触发了我所做的其他事情