为什么授予权限后图库中的照片不会出现?
Why photos from gallery does not appear after permissions giving?
我正在使用此 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 控制器。
由于它在您重新启动应用程序时可以正常工作,所以听起来您可能在显示视图 controller/collection 视图的同时请求权限。问题在于,一旦用户选择允许您的应用访问他们的照片,集合视图就不知道要重新加载。在 PHPhotoLibrary.requestAuthorization 回调中,您需要告诉您的视图 controller/collection 视图在他们授权您的应用后重新加载。下面的小例子:
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
}
}
我正在使用此 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 控制器。
由于它在您重新启动应用程序时可以正常工作,所以听起来您可能在显示视图 controller/collection 视图的同时请求权限。问题在于,一旦用户选择允许您的应用访问他们的照片,集合视图就不知道要重新加载。在 PHPhotoLibrary.requestAuthorization 回调中,您需要告诉您的视图 controller/collection 视图在他们授权您的应用后重新加载。下面的小例子:
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
}
}