【问题标题】:Overriding property in Swift覆盖 Swift 中的属性
【发布时间】:2018-06-09 03:19:38
【问题描述】:

我有一个像下面这样的课程

 class MainVC: UIViewController {

   lazy var someBtn: UIButton = {
    let button = UIButton(type: .system)
    button.translatesAutoresizingMaskIntoConstraints = false
    button.isHidden = true
    button.addTarget(self, action: #selector(didPressBtn), for: .touchUpInside)
    return button
   }()
 }

我继承了 MainVC,当我尝试覆盖 someBtn 时,错误消息显示为 Getter for 'someBtn' with Objective-C selector 'someBtn' conflicts with getter for 'someBtn' from superclass 'MainVC' with the same Objective-C selector

class SecondVC: MainVC {
   override var someBtn:UIButton = {
      return UIButton()
   }
}

【问题讨论】:

  • override var someBtn...。你忘了var。
  • 您发布的代码给出了完全不同的错误。

标签: swift inheritance overriding


【解决方案1】:

你可以做一点改变:

class MainVC: UIViewController {
    lazy var someBtn: UIButton = createB()
    
    func createB() -> UIButton{
         let button = UIButton(type: .system)
         button.translatesAutoresizingMaskIntoConstraints = false
         button.isHidden = true
         return button
    }
}

class SecondVC: MainVC{
    override func createB() -> UIButton {
        return UIButton()
    }
}

把property变成method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多