在我的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/