Пользовательский XIB не показывает подпредставления и не отображается в Интерфейсном Разработчике - PullRequest
0 голосов
/ 01 мая 2019

Я думал, что понял большинство основ для повторного использования XIB, но у меня возникли некоторые проблемы.Я создаю UIView, чтобы представить пользователю вид журнала, и мне нужно использовать его в некоторых случаях.

Мой UIView выглядит следующим образом:

LogInView

Не полностью завершен вид, но он в настоящий момент

Я назначил класс для UIView на LogInView, и в Интерфейсном Разработчике, который я помещаю в него, это показано так:

Main IB

Использование моего пользовательского LogInView в UIViewController

Моя проблема здесь * почему представления, которые я добавляю в мой XIB, отображаются там, но когда я используюXIB они не показаны.Вместо этого shadows, cornerRadius и backgroundColor изменяются и отображаются в InterfaceBuilder.

Одно из решений, которые я прочитал, может состоять в том, чтобы загрузить XIB с использованием Bundle.main.load(...), но когда я делаю это, представление отображается дляViewController становится черным, и я действительно не знаю, где и зачем размещать этот кусок кода.

Код для моего LogInView следующий.

@IBDesignable class LogInView: UIView {

@IBOutlet weak var logInViewTitleLabel: UILabel!



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

    commonInit()
}

func commonInit() {

    self.backgroundColor = .white 
    self.layer.cornerRadius = 10.0

    self.layer.shadowColor = UIColor.darkGray.cgColor
    self.layer.shadowOffset = CGSize(width: 5.0, height: 5.0)
    self.layer.shadowRadius = 25.0
    self.layer.shadowOpacity = 0.9
}

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

    commonInit()
}

override func prepareForInterfaceBuilder() {
    super.prepareForInterfaceBuilder()
    commonInit()

}

override func awakeFromNib() {
    super.awakeFromNib()

    commonInit()

}    

}

...