Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableViewCell中的UIActivityIndicatorView未停止旋转_Iphone_Objective C_Ios_Uitableview_Uiactivityindicatorview - Fatal编程技术网

Iphone UITableViewCell中的UIActivityIndicatorView未停止旋转

Iphone UITableViewCell中的UIActivityIndicatorView未停止旋转,iphone,objective-c,ios,uitableview,uiactivityindicatorview,Iphone,Objective C,Ios,Uitableview,Uiactivityindicatorview,我有一个子类UITableViewCell,名为AccountView,其中包含UIActivityIndicatorView。每个单元格都应该包含一个Twitter帐户。当用户向Twitter发布消息时,UIActivityIndicatorView应该开始旋转,然后在执行Twitter请求处理程序时停止动画: [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlRespons

我有一个子类UITableViewCell,名为AccountView,其中包含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一直在无限期地旋转(或者至少延迟几秒钟),即使日志消息表明不是这样。事实上,这只会破坏图像上传,这让我相信也许我应该在后台线程上发送请求,但我以前从未处理过线程,也不能确定这是否是问题所在


最后一件事,如果我导航到不同的视图并返回,UIActivityIndicatorView看起来是冻结的-如果我导航离开并再次返回,它将永远消失。

来自Apple开发者文档:“这个处理程序不保证在任何特定线程上被调用。”也许您的接口循环正在工作,并且在每次运行循环后都会考虑修改


尝试在主线程中执行接口更改。使用performSelectorOnMainThread:withObject:

您可以尝试添加以下行:

[CATransaction flush];
发送停止设置动画消息后。如果问题是事件循环的速度不够快,这将有所帮助。不清楚这是否是您提供的问题,但值得一试。有关背景信息,请参阅


已更新您需要在头文件中添加
#import
,并确保已使用目标中的构建阶段(将二进制文件与库链接)选项添加QuartzCore框架

我试过这个,现在可以用了。但有一件事我不明白,如果ActivityView在停止微调器之前和之后正在旋转,则报告的
NSLog
消息现在都返回1。很简单,因为正如我所想,主线程正在工作,因此作业不会立即被处理。您可以使用performSelectorOnMainThread:withObject:waitUntilDone:Yes强制等待。您是否认为Twitter框架可能正在将所有请求推送到后台线程上,因此
stopAnimating
命令的优先级较低,无法执行?我想我很困惑,因为
NSLog
正在被执行,他们说ActivityView不应该旋转,但它仍然旋转了很长一段时间。在这方面你正在失去一些东西。NSLog和您的代码对UI对象所做的任何修改都会按时完成。将“活动视图”设置isAnimating修改为“是”,然后使用NSLog编写一些内容。但是,您只对对象进行了修改。然后,每次你的应用程序的主循环在收到一条消息后结束时,系统都会考虑你对UI对象所做的修改,这样你就可以看到结果了。我在,但是出现了一个编译器错误-看起来我必须添加到QuartzCore框架中才能使用它。虽然我标记为正确的解决方案解决了我的上述问题,但我遇到了另一个自定义动画延迟的问题。你的解决方案成功了+1.