2017-01-17 2 views
0

Я получаю следующее сообщение об ошибке при создании своего проекта:Swift 3: компилятор не распознает тип из наследнике UIView

MyUIController: Невозможно преобразовать значение типа «(LoadingView) .Type» (ака «LoadingView. Тип ') до ожидаемого типа аргумента' UIView '

Я не знаю, как получить эту ошибку, если мой класс LoadView является подклассом UIView.

MyUIController:

func loadingToLoading() { 
     // getting error message at this line 
     view.addSubview(LoadingView) 
     loadingView.frame = CGRect(origin: .zero, size: view.frame.size) 
    } 

LoadingView:

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 
    } 
} 
+1

Изменение view.addSubview (LoadingView) -> view.addSubview (loadingView) – nynohu

ответ

0

@nyohu прав. Здесь вы загружаете определение класса, а не его экземпляр. Вы также можете определить новый вид с рамкой, как этот

func loadingToLoading() { 
    var loadingView = LoadingView(frame: CGRect(origin: .zero, size: view.frame.size))   
    view.addSubview(LoadingView) 
}