代码之家  ›  专栏  ›  技术社区  ›  Richard Topchii

Swift:作为目标行动的协议方法

  •  2
  • Richard Topchii  · 技术社区  · 6 年前

    我想要一个协议:

    protocol CameraButtonDelegate: class {
        func cameraButtonDidPress(_ sender: UIButton)
    }
    

    因此,我可以将任何客户机分配给按钮,例如:

    cameraButton.addTarget(delegate, action: #selector(cameraButtonDidPress), for: .touchUpInside)
    

    但是,它不会编译,因为我必须在 action ,例如:

    cameraButton.addTarget(delegate, action: #selector(AAPLViewController.cameraButtonDidPress), for: .touchUpInside)
    

    如果我想让多个客户机被一个按钮锁定,如何解决这个问题?

    2 回复  |  直到 6 年前
        1
  •  4
  •   vadian    6 年前

    @objc

    @objc protocol CameraButtonDelegate: class {
        func cameraButtonDidPress(_ sender: UIButton
    }
    

    cameraButtonDidPress.addTarget(delegate, action: #selector(CameraButtonDelegate.cameraButtonDidPress), for: .touchUpInside)
    
        2
  •  0
  •   Shehata Gamal    6 年前

    cameraButton.addTarget(Service.shared, action: #selector(Service.shared.cameraButtonDidPress(_:)), for: .touchUpInside)
    

    class Service {
    
       static let shared = Service()
    
        @objc func cameraButtonDidPress (_ sender:UIButton){
    
    
        }
    }