【发布时间】:2021-04-28 17:53:31
【问题描述】:
我有 2 个功能,当我打电话时会弄乱我的 UIView。当Button 被点击时,我会打电话给他们。在我调用这两个函数之前,我在UIView 上调用View.isHidden = false。问题是如果我在下面调用这两个函数,.isHidden 会在几秒钟后被调用,看起来很笨重。
@objc func addWishButtonTapped() {
setUpLoadingAnimation() // this is where I call MyCustoView.isHidden = false
self.crawlWebsite { // here I call the two functions below
...
}
}
crawlWebsite:
func crawlWebsite(finished: @escaping () -> Void){
var html: String?
guard let url = self.url else {
return
}
let directoryURL = url as NSURL
let urlString: String = directoryURL.absoluteString!
// save url to wish
self.wishView.link = urlString
html = self.getHTMLfromURL(url: url)
self.getContentFromHTML(html: html, url: url)
}
功能一:
//MARK: getHTMLfromURL
func getHTMLfromURL(url: URL?) -> String{
let myURLString = url
guard let myURL = myURLString else {
print("Error: \(String(describing: url)) doesn't seem to be a valid URL")
return ""
}
do {
let myHTMLString = try String(contentsOf: myURL, encoding: .utf8)
return myHTMLString
} catch let error {
print("Error: \(error)")
}
return ""
}
功能2:
//MARK: getContent
func getContentFromHTML(html: String?, url: URL){
do {
let doc: Document = try SwiftSoup.parse(html ?? "")
if url.absoluteString.contains("amazon") {
self.getAmazonImage(url: url)
}
self.getImages(doc: doc)
// set price if not 0
let price = Int(self.getPrice(doc: doc))
if price != 0 {
self.wishView.amount = Int(self.getPrice(doc: doc))
self.wishView.priceTextField.text = self.wishView.updateAmount()
}
} catch Exception.Error( _, let message) {
print(message)
} catch {
print("error")
}
}
我可以在这里做什么才能使我的视图动画流畅运行?我尝试将这两个函数嵌入到 DispatchQueue.main.async 中,但我无法让它工作......知道吗?我在这里错过了什么?
【问题讨论】:
-
请上传crawlwebsite、hideloadingview、setuploading动画的代码
-
@LucaSfragara 我更新了我的问题,有帮助吗?
-
请上传一些工作代码。
crawlWebsite中的三个点是什么?为什么不调用finished闭包?请上传setUpLoadingAnimation的代码。我希望你能理解,如果我看不到完整的代码,我帮不了你 -
我在
crawlWebsite-closure中调用了其他一些东西,但这不是错误的原因。我在crawlWebsite内部的另一个函数中调用finished我将其缩小到上面的两个函数。如果我删除上面的两个功能,一切都可以正常工作。所以错误一定在上面的代码中。你需要什么? :) -
一个最小的可重现示例。不管怎样,看我的回答
标签: ios swift uiview dispatch-async