我有一个名为 AccountView 的子类 UITableViewCell,其中包含一个 UIActivityIndicatorView。每个单元格都应该包含一个 Twitter 帐户。当用户向 Twitter 发布消息时,UIActivityIndicatorView 应该开始旋转,然后在执行 Twitter 请求处理程序时停止动画:
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error){
if (error != nil) {
NSLog(@"TWITTER ERROR: %@",error);
}
NSLog(@"Posted successfully");
AccountCell *cell = (AccountCell *)[accountTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:[accounts indexOfObject:account] inSection:0]];
NSLog(@"Cell isSpinning? :%d",[[cell activity] isAnimating]);
[[cell activity] stopAnimating];
NSLog(@"Cell isSpinning? :%d",[[cell activity] isAnimating]);
}];
这在向 Twitter 发布一条短消息时一切正常,但是,当 TWRequest 包含要上传的图像时,几秒钟后,带有图像的帖子出现在 Twitter 上,我在控制台中看到以下消息:
2011-12-10 00:13:22.085 TwitTest[14954:1a03] Posted Successfully
2011-12-10 00:13:22.086 TwitTest[14954:1a03] Cell isSpinning? :1
2011-12-10 00:13:22.088 TwitTest[14954:1a03] Cell isSpinning? :0
但 UIActivityIndicatorView 会无限期地旋转(或至少延迟几秒钟),即使日志消息另有指示。这只在图片上传时中断,这一事实让我相信也许我应该在后台线程上发送请求,但我以前从未处理过线程,因此无法确定这是否是问题所在。
最后一件事,如果我导航到不同的 View 并返回,UIActivityIndicatorView 会显示为卡住状态 - 如果我导航离开并再次返回,它就会永远消失。
最佳答案
来自 Apple Developer 的文档:“不保证在任何特定线程上调用此处理程序。”也许您的界面循环正在运行,并且在每次运行循环后都会考虑修改。
尝试在主线程中执行接口(interface)更改。使用 performSelectorOnMainThread:withObject:
关于iphone - UITableViewCell 中的 UIActivityIndicatorView 不会停止旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455384/