我有一个非常奇怪的问题。这里发生了什么。
我的.h
文件中有以下内容:
@property (strong, nonatomic) IBOutlet UIBarButtonItem *m_rightBtn;
在我.m
的{{1}}文件中,我通过viewDidLoad
请求内容,并根据响应值在完成块中执行以下操作:
AFNetworking
所以我的问题是if(isFav) {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_active.png"];
} else {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_inactive.png"];
}
上没有图像。 UIBarButtonItem
没有设置,但是当我尝试将图像设置为完成块时,一切正常。在块内不起作用的东西,但是我无法理解为什么以及为什么,这为什么会在块外工作?
有人可以帮我解决这个问题吗?附:我正在使用XCode 5并在iOS7下运行应用程序。
提前致谢。
答案 0 :(得分:0)
这个响应块在另一个线程中,要更改你需要在主线程中的可视元素,试试这个:
dispatch_async(dispatch_get_main_queue(), ^{
if(isFav) {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_active.png"];
} else {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_inactive.png"];
}
});
答案 1 :(得分:0)
只是结合以前的答案:
[favoritesOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *favoritesOperation, id responseObject) {
dispatch_async(dispatch_get_main_queue(), ^{
....
if(isFav) {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_active.png"];
} else {
self.m_rightBtn.image = [UIImage imageNamed:@"favorite_star_inactive.png"];
}
});
}];
您也可以使用performSelectorOnMainThread方法