Ios 无法将从XIB创建的自定义UIView子类强制转换为我需要的类(仅UIView)

Ios 无法将从XIB创建的自定义UIView子类强制转换为我需要的类(仅UIView),ios,swift,xcode,uiview,xib,Ios,Swift,Xcode,Uiview,Xib,我所做的是: 1) 创建了.xib文件translationfowindow.xib: 2) 创建了包含以下内容的translationInfo.swift文件: import UIKit class TranslationInfoWindow: UIView { // MARK: - Initializers override init(frame: CGRect) { super.init(frame: frame) setupView

我所做的是:

1) 创建了
.xib
文件
translationfowindow.xib

2) 创建了包含以下内容的
translationInfo.swift
文件:

import UIKit

class TranslationInfoWindow: UIView {

    // MARK: - Initializers

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupView()
    }

    // MARK: - Private Helper Methods

    // Performs the initial setup.
    private func setupView() {
        let view = viewFromNibForClass()
        view.frame = bounds

        // Auto-layout stuff.
        view.autoresizingMask = [
            UIViewAutoresizing.flexibleWidth,
            UIViewAutoresizing.flexibleHeight
        ]

        // Show the view.
        addSubview(view)
    }

    // Loads a XIB file into a view and returns this view.
    private func viewFromNibForClass() -> UIView {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView

        return view
    }

    @IBOutlet weak var avatarImageView: RoundedImageView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var usersLabel: UILabel!
}
3) 在这里,我尝试初始化我的自定义视图:

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
    //             FIXME: There is a UIView but it doesn't want to be casted in TranslationInfoWindow
    if let infoWindow = Bundle.main.loadNibNamed(
        "TranslationInfoWindow", owner: view, options: nil)?.first as? TranslationInfoWindow {
        return infoWindow
    } else {
        return nil
    }
}
现在,如果我尝试运行该项目,我会出现以下错误:

我做错了什么


更新:

以下是xib的层次结构:

在Interface Builder中,您是否将Identity Inspector(左三)选项卡中的类名从UIView更改为自定义类名?

您应该将translationFoWindow.xib的正确类设置为IB中的translationFoWindow类型。

请发布一个屏幕截图,说明xib树的外观。还要检查问题是否确实是在控制台中显示错误消息(如果有的话)。否则,log(类)
let view=nib.instantiate(withOwner:self,options:nil)。首先
@FernandoMazzon添加了xibclass func instanceFromNib()->UIView的层次结构{return UINib(nibName:“nib file name”,bundle:nil)。instantiate(withOwner:nil,options:nil)[0]as!UIView}看到了吗?你能记录
bundle.main.loadNibNamed吗(“TranslationInfo窗口”,所有者:视图,选项:无)
?仅适用于“文件”所有者,不适用于“视图”尝试将自定义类的名称设置为此处的值。我相信这是缺少的部分。你确定吗?没有看到任何人建议在此处设置自定义类。我个人不使用所有者。你可以将插座绑定到视图本身,然后使用零所有者。显然,对于此类独立视图,请尝试循环如果类型与您的类相同,请选择正确的笔尖…而不是选择第一个。