Привязка не вызывает событие в ViewController с использованием MVVM в Swift 4 - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь изучить связывание и понять подход MVVM в Swift.

Я ожидал, что приведенный ниже пример сработает, по сути, вызывается someEventHappened, это вызывает закрытие onEvent, и мое сообщениезарегистрировано на экране.

Однако этого не происходит, ничего не печатается, и я немного не знаю, почему?

class ViewModal { 
    public var onEvent: (() -> Void)?
    func someEventHappened() -> Void {
        onEvent?()
    }
}

class ViewController: UIViewController {

    lazy var viewModel: ViewModal = {
        let viewModal = ViewModal()
        return viewModal
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        view.backgroundColor = .purple
        viewModel.someEventHappened()
        viewModel.onEvent = {
            print("something happened")
        }
    }
}

1 Ответ

0 голосов
/ 07 декабря 2018

Просто поменяйте местами присваивание onEvent и вызов someEventHappened

viewModel.onEvent = {
    print("something happened")
}
viewModel.someEventHappened()

это потому, что вы вызываете обработчик onEvent внутри someEventHappened и в viewDidLoad, который вы впервые вызвали someEventHappenedа затем присваивается onEvent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...