gpt4 book ai didi

ios - UIButton 文本未更新

转载 作者:行者123 更新时间:2023-11-29 01:21:16 24 4
gpt4 key购买 nike

我在 iOS Swift 应用程序中使用的“经过验证且真实”的模式是,我有几个带有 UIButton 的区域。当按下按钮时,它会触发一些连接到我的 API 的网络代码。当发生这种情况时,我的按钮文本显示“请稍候,正在加载”,并且我禁用了该按钮。当排队的操作在我的回调中完成时,我启用按钮文本并更改回原始状态。效果很好。

我最近添加了一些不使用 NSURL/NSDATA 的内容(它只是一个文件编写器)。我复制了所有相同的 GCD 队列代码,奇怪的是它没有更新按钮文本。

这是我的代码。当您点击按钮时,文本会变得不可见,直到回调完成,然后它才恢复原状。奇怪的是,如果我将模拟器更改为 iPad Pro,它实际上可以工作(??)并显示“请稍候,正在下载”。如果我换成 iPhone 6s,它就不起作用了。

@IBAction func btnGenerateCSV(sender: UIButton) {

//Grab the original text of the button to restore later after done
let originalButtonText = sender.titleForState(UIControlState.Normal)

//Localized is an extension function I wrote.
//As you can see I got crazy here adding all the UI States as a last ditch attempt to see if that was the reason.
sender.setTitle(Localized("Downloading"), forState: UIControlState.Normal)
sender.setTitle(Localized("Downloading"), forState: UIControlState.Disabled)
sender.setTitle(Localized("Downloading"), forState: UIControlState.Highlighted)
//I've tried moving this before the setTitle. No avail.
sender.enabled = false
//I've tried the other queues as well, and even just tried dispatch_async(dispatch_get_main_queue()) but no luck

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { [unowned self] in

CsvReportWriter.GenerateReport()
{
r in
dispatch_async(dispatch_get_main_queue()) {
FileManager.WriteToFile(r, filename: self.filename)

if FileManager.FileExists(self.filename) {
self.docController = UIDocumentInteractionController(URL: FileManager.GetURLOfFile(self.filename))
self.docController.presentOptionsMenuFromRect(sender.frame, inView:self.view, animated:true)
}
//Restore button state and text b/c we're done
sender.enabled = true
sender.setTitle(originalButtonText, forState: UIControlState.Normal)
}

}
}
}

有什么想法吗?如果我将 CsvReportWriter.GenerateReport() 代码换成其他一些调用我的 API 的异步代码,它就可以工作。

非常感谢!

最佳答案

所以我想发布一个我认为很有趣的答案 - 我有一个不同的帐户登录到我的 iPad Pro 模拟器..并注意到标签正确显示。在 iPhone 6 中没有。我登录了另一个帐户。

那么有什么区别呢?在 iPad pro 中生成大约 1,000,000 个测试行,在 iPhone 中生成 3 个,所以一切都完成得非常快,甚至没有 UI 需要更新。

我引入了一个延迟作为测试,并注意到实际上它可以工作/导出,所以这就是它的实际情况。

所以事实证明事情运行得太快了,甚至没有时间更新到“请稍等”哈哈

很抱歉打扰任何人,但请随意使用上面的代码,因为它应该可以有效地满足您的需求:)

关于ios - UIButton 文本未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com