Обновите подпредставления UIView из ViewController - PullRequest
1 голос
/ 11 июля 2019

У меня есть UIViewController, который реализует пользовательский UIView, поэтому;

override func loadView() {
    view = CustomView()
}

В пользовательском представлении есть несколько ярлыков и кнопок и все обычные вещи, проблема в моем viewController. У меня есть запрос, и когда этот запрос будет выполнен, я бы хотел обновить некоторые из этих ярлыков / кнопок.

Прямо сейчас, в моем CustomView, у меня есть функции, такие как;

func updateView() {
    labelOne.isHidden = true
    LabelTwo.isHidden = false
}

Поэтому я вызываю соответствующую функцию из моего viewController, когда запрос выполнен.

Это работает, но кажется неправильным, есть ли более удобный способ обновления подпредставлений моего пользовательского UIView из моего viewController? Должен ли я использовать протоколы или делегатов?

1 Ответ

1 голос
/ 11 июля 2019

Одна вещь, которую я нашел довольно изящной в прошлом, - это передача модели непосредственно в пользовательское представление с последующим использованием didSet для запуска обновлений.

class CustomView: UIView {

    let labelOne = UILabel()
    let labelTwo = UILabel()

    var object:CustomObject! {
        didSet {
            self.labelOne.text = object.name
            self.labelTwo.text = object.description
        }
    }

    ...

}

Это означает, что в вашем UIViewController вы можете выполнить запрос и затем передать модель прямо в пользовательское представление.

RequestHelper.getObject() { object in
    self.customView.object = object
}

Очевидно, здесь я угадываю по вашему запросу и именам объектов, но, надеюсь, вы поймете идею.

...