题
我正在将一堆文件从 iPhone 上传到网络服务。我想在屏幕上有一个 UIAlertView ,里面有一个 UIActivityIndicatorView 。我让它工作得很好。但是,我想在上传每个文件时更新 UIAlertView 的标题。(“正在上传文件 1...”、“正在上传文件 2...”等)
我知道您不能仅在具有同步 Web 请求的循环中设置标题,因为 UI 运行循环永远不会被调用。我尝试使用 NSTimer 来触发网络请求,但由于每个请求的持续时间是不可预测的,所以这是行不通的。(该消息可能会在请求实际完成之前更新。)
我真的很想同步上传每个文件,一次一个,因为 iPhone 带宽非常有限。我只是想不出一种机制来表示“一旦这个同步操作完成,让 UI 更新一次,然后再执行另一个同步操作。”
解决方案
好的,这是我解决这个问题所采取的方法:
- 创建 UIAlertView
- 启动异步 Web 请求来发布项目,将委托设置为 self
- 在连接DidFinishLoading中:方法,检查是否还有更多项目要发布。如果有,则更新标题并启动另一个异步请求。如果没有,请关闭警报。
这意味着您必须维护一些类变量来跟踪正在上传的请求,但它运行良好,并且不涉及任何复杂的线程或其他任何内容。
其他提示
你试过这个吗?
alertView.title = @"new title";
[alertView setNeedsDisplay];
不隶属于 StackOverflow