iOS 8共享扩展显示共享图像问题

我在我的UIImageView中显示图像有问题。

所以这是我在ShareViewController中获取图像的方法:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; for (NSItemProvider* itemProvider in ((NSExtensionItem*)self.extensionContext.inputItems[0]).attachments ) { if([itemProvider hasItemConformingToTypeIdentifier:@"public.image"]) { ++counter; [itemProvider loadItemForTypeIdentifier:@"public.image" options:nil completionHandler: ^(id<NSSecureCoding> item, NSError *error) { UIImage *sharedImage = nil; if([(NSObject*)item isKindOfClass:[NSURL class]]) { sharedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:(NSURL*)item]]; } if([(NSObject*)item isKindOfClass:[UIImage class]]) { sharedImage = (UIImage*)item; } if ([(NSObject *)item isKindOfClass:[NSData class]]) { sharedImage = [UIImage imageWithData:(NSData *)item]; } [[NSNotificationCenter defaultCenter] postNotificationName:@"kNotificationDidLoadItem" object:sharedImage]; }]; } } } 

这是我在DetailsViewController中接收通知的方式:

 - (void)didLoadSharedImage:(NSNotification *)notification { UIImage *sharedImage = [notification object]; [self.sharedImages addObject:sharedImage]; if (!self.theImageView.image) { self.theImageView.image = sharedImage; } } 

所以在这个方法之后没有可见的图像。 我debugging了它,我看到那个图像在那里,但是当我推送新的视图控制器formsDetailsViewController然后popup时,我很奇怪。 只有这样UIImageView才能刷新自我。

你有没有尝试执行didLoadSharedImage到UIThread。 喜欢

 dispatch_async(dispatch_get_main_queue(), ^{ if (!self.theImageView.image) { self.theImageView.image = sharedImage; } }) 

祝你好运