我对编程仍然很陌生,有时它会给我带来非常基本的概念。 我在tableviewcontroller中定义了一个活动指示器作为Outlet。
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
使用数据填充tableview的数据下载是在具有下载功能的类中的单独文件中完成的。这些函数包括下载的完成处理程序。现在,如果我想插入
activityIndicator.stopAnimating()
在完成部分然后我得到消息"使用未解析的标识符activityIndicator"。如何使acitivityIndicator分别成为全局属性,如何使下载类/函数识别tableViewController中定义的activityIndicator?我知道这对你们大多数人来说可能是一个愚蠢的问题,但我不知道如何解决这个问题。
答案 0 :(得分:0)
理想情况下,您不希望下载代码“知道”有关activityIndicator的信息。当viewController调用下载时,您可以传递另一个完成处理程序。然后,当下载完成处理程序运行时,调用此新的完成处理程序。 viewController知道activityIndicator,因此它可以阻止它。某事(非常粗略地)沿着以下几点:
// In ViewController
myThing.doTheDownload(completion: {
dispatch_async(dispatch_get_main_queue(), {
self.activityIndicator.stopAnimating()
})
})
// In download code
func doTheDownload(completion completionHandler: (() -> Void)) {
download(completion: {
completionhandler()
})
}
请注意,activityIndicator是一个UI元素,因此其代码必须在主线程上运行。