在我的HomeViewController中有四个部分:


旗帜
热门产品
新产品
旧产品


所有都是.xib文件,它们工作正常。

现在我想在ActivityIndicator中添加HomeViewController

所以现在我想在ActivityIndicator上显示HomeViewController,直到所有的文件没有完全加载到xib中,因为HomeViewController.xib应该隐藏。

现在,对我来说,问题是如何获得有关ActivityIndicator加载到.xib的确认?

最佳答案

作为一个非常简单的直接解决方案,您可以遵循委托方法。因此,当“热门产品”视图完成所需的过程时,您应该触发将由视图控制器处理的委托方法。

例:

考虑到在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 answer以更好地了解代表。

关于swift - 如何检查加载到HomeViewController中的PopularProduct.xib文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53726820/

10-11 19:46