Как я могу проверить файл PopularProduct.xib, загруженный в HomeViewController - PullRequest
0 голосов
/ 11 декабря 2018

В моем HomeViewController есть четыре раздела:

  1. Баннер
  2. Популярный продукт
  3. Новый продукт
  4. Старый продукт

Все файлы .xib, и они работают нормально.

Теперь я хочу добавить ActivityIndicator в мой HomeViewController

Так что теперь я хочу показать ActivityIndicator вHomeViewController до тех пор, пока все файлы. xib не будут полностью загружены в HomeViewController, поскольку .xib ActivityIndicator не будет скрыт.

Теперь проблема для меня заключается в том, как я могу получитьподтверждение о .xib загружено на HomeViewController или нет?

1 Ответ

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

Как довольно простое прямое решение, вы можете использовать делегирование .Итак, когда «Популярный продукт» View завершит необходимый процесс, вы должны запустить метод делегата, который будет обрабатываться контроллером представления.

Пример:

считать, что в PopularProduct классе выреализует метод с именем doSomething(), который необходимо вызвать и завершить свою работу, чтобы скрыть индикатор активности от контроллера представления, и он должен отправить экземпляр Data в контроллер представления.Вы можете сделать это так:

protocol PopularProductDelegate: class {
    func popularProduct(popularProduct: PopularProduct, doSomethingDidPerformWith data: Data)
}

class PopularProduct: UIView {
    // ...
    weak var delegate: PopularProductDelegate?

    func doSomething() {
        // consider that there is much work to be done here
        // which generates a data instance:
        let data = Data(base64Encoded: "...")!

        // therefore:
        delegate?.popularProduct(popularProduct: self, doSomethingDidPerformWith: data)
    }

    // ...
}

Следовательно, в ViewController:

class ViewController: UIViewController {
    // ...
    var popularProduct: PopularProduct!

    override func viewDidLoad() {
        super.viewDidLoad()

        // show indicator
        popularProduct.doSomething()
    }
    // ...
}

extension ViewController: PopularProductDelegate {
    func popularProduct(popularProduct: PopularProduct, doSomethingDidPerformWith data: Data) {
        print(data)
        // hide indicator
    }
}

Кроме того , вы можете проверить myответ для лучшего понимания делегатов.

...