123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- //
- // KMTextFieldStepperView.swift
- // PDF Office
- //
- // Created by lizhe on 2022/12/13.
- //
- import Cocoa
- typealias KMTextFieldStepperViewValueDidChange = (_ view: KMTextFieldStepperView, _ value: String) -> Void
- class KMTextFieldStepperView: NSView, NSTextFieldDelegate {
- @IBOutlet var contentView: NSView!
- @IBOutlet weak var inputTextField: KMBaseTextField!
- @IBOutlet weak var stepper: NSStepper!
-
- var presenter: KMBaseTextFieldPresenter = KMBaseTextFieldPresenter()
- var model: KMBaseTextFieldModel = KMBaseTextFieldModel() {
- didSet {
- self.presenter.model = model
- self.inputTextField.model = model
- }
- }
- var valueDidChange: KMTextFieldStepperViewValueDidChange?
- var stringValue: String {
- set {
- self.stepper.stringValue = newValue
- self.inputTextField.stringValue = newValue
- }
- get {
- return self.inputTextField.stringValue
- }
- }
- var isEnabled: Bool = true {
- didSet {
- self.inputTextField.isEnabled = isEnabled
- self.stepper.isEnabled = isEnabled
- }
- }
-
- deinit {
- // self.delegate = nil
- }
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- // Drawing code here.
-
- }
- // MARK: 初始化
- public required init?(coder decoder: NSCoder) {
- super.init(coder: decoder)
- initContentView()
- setup()
- }
-
- private func initContentView() {
- //绑定xib
- let resource = NSNib(nibNamed: String(describing: self.classForCoder.self),
- bundle: Bundle(for: self.classForCoder.self))!
- resource.instantiate(withOwner: self, topLevelObjects: nil)
- addSubview(contentView)
- contentView.translatesAutoresizingMaskIntoConstraints = false
- NSLayoutConstraint.activate([
- contentView.topAnchor.constraint(equalTo: topAnchor),
- contentView.leftAnchor.constraint(equalTo: leftAnchor),
- contentView.rightAnchor.constraint(equalTo: rightAnchor),
- contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
- contentView.updateConstraintsForSubtreeIfNeeded()
- }
-
- func setup() {
- self.presenter.initPresenter(delegate: self, model: self.model)
-
- self.inputTextField.textDidEndEditing = {[unowned self] textField in
- self.presenter.changeValue(value: textField.stringValue)
- }
- }
-
- //刷新界面UI 和 数据
- func reloadData() {
- self.inputTextField.stringValue = self.model.stringValue
- self.stepper.stringValue = self.model.stringValue
- }
- }
- protocol KMTextFieldStepperViewPrivate {}
- extension KMTextFieldStepperView: KMTextFieldStepperViewPrivate {
- }
- protocol KMTextFieldStepperViewAction {}
- extension KMTextFieldStepperView: KMTextFieldStepperViewAction {
- @IBAction func stepperAction(_ sender: NSStepper) {
- print(sender.intValue)
- self.presenter.changeValue(value: sender.stringValue)
- }
- }
- extension KMTextFieldStepperView: KMBaseTextFieldPresenterDelegate {
- func valueDidChange(presenter: KMBaseTextFieldPresenter, model: KMBaseTextFieldModel) {
- self.reloadData()
- if self.valueDidChange != nil {
- self.valueDidChange!(self, self.model.stringValue)
- }
- }
- }
|