Swift 3:编译器无法识别子类 UIView 的类型
Posted
技术标签:
【中文标题】Swift 3:编译器无法识别子类 UIView 的类型【英文标题】:Swift 3 : Compiler does not recognize type of subclassed UIView 【发布时间】:2017-01-17 00:48:14 【问题描述】:我在构建项目时收到以下错误消息:
MyUIController:无法将类型“(LoadingView).Type”(又名“LoadingView.Type”)的值转换为预期的参数类型“UIView”
如果我的 LoadingView 类是 UIView 的子类,我不知道我是如何得到这个错误的。
MyUIController:
func loadingToLoading()
// getting error message at this line
view.addSubview(LoadingView)
loadingView.frame = CGRect(origin: .zero, size: view.frame.size)
加载视图:
import Foundation
import UIKit
final class LoadingView: UIView
private let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
override init(frame: CGRect)
spinner.startAnimating()
super.init(frame: frame)
addSubview(spinner)
backgroundColor = UIColor.white
@available(*, unavailable)
required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")
override func layoutSubviews()
super.layoutSubviews()
spinner.center = center
【问题讨论】:
更改 view.addSubview(LoadingView) -> view.addSubview(loadingView) 【参考方案1】:@nyohu 是对的。您在这里所做的是加载类定义而不是它的实例。您还可以使用这样的框架定义新视图
func loadingToLoading()
var loadingView = LoadingView(frame: CGRect(origin: .zero, size: view.frame.size))
view.addSubview(loadingView)
【讨论】:
以上是关于Swift 3:编译器无法识别子类 UIView 的类型的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Swift 中设置 UITableViewCell 中使用的 UIView 子类的背景颜色
带有协议问题的 Swift Generic UIView 子类
在 Swift 3.1 中为 UIView 子类设置默认外观而不覆盖 initialize()