在变量上使用POP时,类没有初始化程序

时间:2018-09-04 06:38:20

标签: ios swift initialization protocols viewcontroller

我想在我的一个应用程序中应用面向协议的编程。我创建了一个名为“ CustomAnchor”的协议,以摆脱自动布局所需的大量命令。但是,当我将此协议分配给一个常量(例如profileImage)时,控制器会收到以下错误:

  

“ ProfileController”类没有初始化程序

在常量上,我得到这个灰色警告:

  
      
  1. 没有初始值的存储属性'profileImageView'会阻止合成初始化程序
  2.   

代码是这样的:(底部使用POP)

class ProfileController: UIViewController {

 override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor.white
    self.navigationItem.title = "Profil"
    self.navigationItem.largeTitleDisplayMode = .never
    fillData()
    setupView()
    confBounds()
 }

 func fillData() {
    profileImageView.image = UIImage(named: "test")
 }

 func setupView() {
    view.addSubview(profileImageView)
 }

 func confBounds() {
    profileImageView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    profileImageView.anchor(top: self.view.topAnchor, left: nil, bottom: nil, right: nil, paddingTop: 60, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 140, height: 140)
 }

 let profileImageView: UIImageView, CustomAnchor = { () -> UIImageView in
    let pView = UIImageView()
    pView.contentMode = .scaleAspectFill
    pView.clipsToBounds = true
    pView.image = UIImage(named: "test")
    return pView
 }()
}

1 个答案:

答案 0 :(得分:0)

因为没有人回答,所以我做了一个简单的解决方法,然后将该属性提供给了Controller。并不是我真正想要的(平滑的POP),但是它可以工作。.