为什么在权限授予后才会显示来自图库的照片?

时间:2016-05-25 13:17:05

标签: ios swift github photo-gallery

我正在使用此GitHub project's controller在UICollectionView中显示用户的照片库。一切都没问题,但除了一个:如果我第一次运行它,它会询问我权限。我接受了,但之后我无法从画廊中获取我的照片。它什么也没显示。

但是当我关闭我的应用并再次运行时,它可以从图库中获取我的照片。所以,这个问题就出现在第一次发布时。

任何人都可以帮助我,我该如何解决?

更新

我想,这个观察者的工作不正确:

func photoLibraryDidChange(changeInstance: PHChange) {
    let changeDetails = changeInstance.changeDetailsForFetchResult(images)

    self.images = changeDetails!.fetchResultAfterChanges
    dispatch_async(dispatch_get_main_queue()) {
        // Loop through the visible cell indices
        let indexPaths = self.imagesCollectionView.indexPathsForVisibleItems()
        for indexPath in indexPaths as [NSIndexPath]! {
            if changeDetails!.changedIndexes!.containsIndex(indexPath.item) {
                let cell = self.imagesCollectionView?.cellForItemAtIndexPath(indexPath) as! ImagesCollectionViewCell
                cell.imageAsset = changeDetails!.fetchResultAfterChanges[indexPath.item] as? PHAsset
            }
        }
    }
}

所以,我给了权限,但它没有显示我的照片。为此,我需要重新启动我的应用

如果你想要任何代码 - 我可以分享它。但我正在使用上面附上的github控制器。

1 个答案:

答案 0 :(得分:0)

由于重新启动应用程序时它可以正常工作,因此您可能会在显示视图控制器/集合视图的同时询问权限。问题是,一旦用户选择让您的应用访问他们的照片,集合视图就不会重新加载。在PHPhotoLibrary.requestAuthorization回调中,您需要告知您的视图控制器/集合视图在授权您的应用程序后重新加载。下面的小例子:

PHPhotoLibrary.requestAuthorization { status in
switch status {
case .Authorized:
   /* RELOAD COLLECTION VIEW HERE */
case .Restricted:
    <#your code#>
case .Denied:
    <#your code#>
default:
    // place for .NotDetermined - in this callback status is already determined so should never get here
    break
}

}