无法设置UIBarButtonItem图像完成块

时间:2014-02-14 19:38:24

标签: ios afnetworking uibarbuttonitem

我有一个非常奇怪的问题。这里发生了什么。

我的.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下运行应用程序。

提前致谢。

2 个答案:

答案 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方法